【问题标题】:If statement with multiple SQL select statements PL/SQL (ORACLE APEX)带有多个 SQL 选择语句的 if 语句 PL/SQL (ORACLE APEX)
【发布时间】:2018-06-27 12:50:28
【问题描述】:

我想知道是否可以在使用 PL/SQL 的 if 语句中包含多个 SQL 选择语句。我想要基于另一个字段的值的不同选择语句。

这是我迄今为止尝试过的,但我被卡住了,无法继续

    BEGIN
    IF
        :P3_COMPAREWITH <> 'OTHER TABLES'
    THEN
        SELECT TABLE_NAME AS TARGET, TABLE_NAME AS TARGETTABLE 
        FROM ALL_TABLES@target.hu.nl 
        WHERE OWNER = 'TOSAD_2017_2D_TEAM4_TARGET';
    ELSIF
        :P3_COMPAREWITH = 'OTHER TABLES'
    THEN
        SELECT TABLE_NAME AS TARGET, TABLE_NAME AS TARGETTABLE 
        FROM ALL_TABLES@target.hu.nl 
        WHERE OWNER = 'TOSAD_2017_2D_TEAM4_TARGET' AND TABLE_NAME <> :P3_TARGETTABLE;
    END IF;
    END;

如果有人可以帮助我,在此先感谢。

【问题讨论】:

  • PL/SQL 中的 select 语句是没有意义的。您需要定义要放置所选数据的位置,并且有很多可能性(变量、记录、集合、游标......)。所以告诉我们你想对选定的数据做什么。

标签: sql if-statement select plsql oracle-apex


【解决方案1】:

如果我理解正确,那么你可以换个方式

DECLARE
    P3_COMPAREWITH VARCHAR2(128) := '';
    P3_TARGETTABLE VARCHAR2(128) := '';
BEGIN

FOR CUR IN ( SELECT TABLE_NAME AS TARGET, TABLE_NAME AS TARGETTABLE
    FROM ALL_TABLES@target.hu.nl 
    WHERE OWNER = 'TOSAD_2017_2D_TEAM4_TARGET' AND ( TABLE_NAME <> P3_TARGETTABLE OR P3_COMPAREWITH <> 'OTHER TABLES' ) )
LOOP
    --use data from cursor
END LOOP;

END;

【讨论】:

    【解决方案2】:

    如果我理解正确,您想从两个不同的表中进行选择,具体取决于 P3_COMPAREWITH 项目值。这很可能不应该是 PL/SQL,而是报告源或类似的东西。没关系,如果我错了,原理应该是一样的——在PL/SQL中你需要INTO子句。

    所以:创建两个查询的 UNION,并让 P3_COMPAREWITH 决定将使用其中的哪一个。

    SELECT TABLE_NAME AS TARGET, 
           TABLE_NAME AS TARGETTABLE 
    FROM ALL_TABLES@target.hu.nl 
    WHERE OWNER = 'TOSAD_2017_2D_TEAM4_TARGET'
      AND :P3_COMPAREWITH <> 'OTHER TABLES'        --> this
    --
    UNION                                          --> this
    --
    SELECT TABLE_NAME AS TARGET, 
           TABLE_NAME AS TARGETTABLE 
    FROM ALL_TABLES@target.hu.nl 
    WHERE OWNER = 'TOSAD_2017_2D_TEAM4_TARGET' 
      AND TABLE_NAME <> :P3_TARGETTABLES
      AND :P3_COMPAREWITH = 'OTHER TABLES'         --> this
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 2013-12-21
      相关资源
      最近更新 更多