簡體   English   中英

如果語句具有多個SQL選擇語句PL / SQL(ORACLE APEX)

[英]If statement with multiple SQL select statements PL/SQL (ORACLE APEX)

我想知道在使用PL / SQL的if語句中是否可以有多個SQL select語句。 我想要基於另一個字段的值的不同選擇語句。

到目前為止,這是我嘗試過的操作,但是我被卡住了,無法繼續

    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;

如果有人可以幫助我,請先謝謝。

如果我理解正確,那么您可以改變方式

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;

如果我對您的理解正確,則要根據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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM