oracle sql if condition then select statement1 else select statement2

Posted

技术标签:

【中文标题】oracle sql if condition then select statement1 else select statement2【英文标题】: 【发布时间】:2018-04-12 03:29:46 【问题描述】:

我有参数 :prmtr,我想要的是使用基于参数输入的 select 语句。

我试过了:

if :prmtr= 'A' then
    select * from tblA;
else
    select * from tblB;
end if;

但它不会工作。

还有其他方法可以做到这一点吗?

【问题讨论】:

两张表的列是否相同? 不,伙计,他们不一样 【参考方案1】:

您可以使用CURSOR 变量和PRINT 命令尝试类似的操作。当作为脚本运行时,这适用于 SQL* plus 和 SQL 开发人员或 TOAD。

VARIABLE prmtr VARCHAR2
EXEC :PRMTR := 'A'  -- SET values of parameter

VARIABLE x refcursor -- a cursor variable

DECLARE
BEGIN
    IF :PRMTR = 'A' THEN
      OPEN :x FOR
        SELECT *
        FROM   employees;
    ELSE
      OPEN :x FOR
        SELECT *
        FROM   departments;
    END IF;
END;
/

PRINT x  -- gives you the result of the query.

【讨论】:

以上是关于oracle sql if condition then select statement1 else select statement2的主要内容,如果未能解决你的问题,请参考以下文章

Oracle之PL/SQL编程_流程控制语句

Oracle 中的 if(condition, then, else)

Oracle SQL If语句使用select进行比较[重复]

ORACLE 中使用 GROUP BY 和 HAVING COUNT(condition) 的 SQL 查询

Shell if else语句(详解版)

oracle PLSQL 查询语句select t.*, t.rowid from PU.YK t