我有以下 2 個查詢:
從我的表中選擇 *;SELECT * from mytable where rownum < 100;
每當我的模式等于“SCHEMA1”時,我想執行第一個,否則執行第二個。有沒有辦法做到這一點而不必像這樣重寫兩個查詢:
DECLARE
myschema VARCHAR2(50);
BEGIN
SELECT
sys_context('userenv', 'current_schema')
|| 's'
INTO myschema
FROM
dual;
IF myschema = 'SCHEMA1' THEN
INSERT INTO myothertable
SELECT
*
FROM
mytable;
ELSE
INSERT INTO myothertable
SELECT
*
FROM
mytable
WHERE
ROWNUM < 100;
END IF;
END;
我還想避免使用動態 PLSQL。
uj5u.com熱心網友回復:
我會這樣寫:
DECLARE
MYSCHEMA VARCHAR2(50);
BEGIN
SELECT SYS_CONTEXT('userenv', 'current_schema')||'s'
INTO MYSCHEMA
FROM DUAL;
INSERT INTO myothertable
SELECT *
FROM mytable
WHERE ROWNUM < CASE WHEN MYSCHEMA = 'SCHEMA1' THEN 100
ELSE ROWNUM 1
END;
END;
/
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/442065.html
