[英]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.