【问题标题】:Oracle DB - How to set IF statement in AND operator?Oracle DB - 如何在 AND 运算符中设置 IF 语句?
【发布时间】:2018-05-16 22:24:56
【问题描述】:

我想在执行AND操作符之前设置IF语句。

例如:

PROCEDURE STORE_SIGNLOOP_APPROVER
(
    userID     in  varchar2
    isManager  in varchar2
    result   out ref_cursor
) 
AS

BEGIN
    SELECT user_role
    FROM users
    WHERE user_id = userID
    AND **IF isManager = 'true'**  user_id IN (SELECT user id from managers)
END;

【问题讨论】:

  • 为什么要预先计算“ismanager”?你可以在你的过程中检查它。如果用户也在经理表内,则它是经理。为什么你使用 varchar 作为真/假值?
  • 嗨,这是解释我的目的的唯一简单示例。你说得对,它不是很好;)
  • 对于这个“示例”,我只需将经理加入到用户中 - 完成。如果用户不是经理,则没有结果。不知道为什么还要使用过程。:stackoverflow.com/a/25419698/7505395

标签: sql database oracle


【解决方案1】:

你可以使用:

select user_role
fron users
where user_id = userID
  AND (((user_id in (select user_id from managers) AND isManager = 'true'))
       OR isManager = 'false'
      );

注意:您可以使用 '0/1' 值,而不是将 'true/false' 作为字符串文字传递。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 2012-02-22
    • 2020-06-08
    • 2011-01-13
    • 1970-01-01
    相关资源
    最近更新 更多