0
我必須使用clob中的數據在循環中執行查詢並將每個查詢的結果存儲在遊標中。但是我不知道如何/在哪裏打開遊標。如果我在循環中這樣做,那麼我假設只有最後一個查詢的數據會出現。如何將查詢的結果放入PL SQL過程中的Cursor循環中?
在這種情況下要走的路是什麼。
這就是我想實現:
https://www.mkyong.com/jdbc/jdbc-callablestatement-stored-procedure-cursor-example/
PROCEDURE PRC(
P_DATE IN VARCHAR,
P_CLOB IN CLOB,
P_CUR OUT SYS_REFCURSOR
) IS
V_DATE DATE;
V_STR VARCHAR;
BEGIN
V_DATE := TO_DATE(P_DATE, 'DD/MM/YYYY');
V_CLOB_LENGTH := DBMS_LOB.getlength(P_CLOB);
V_START_CHAR := 1;
V_LEN := 5;
WHILE (V_START_CHAR + V_LEN) <= V_CLOB_LENGTH
LOOP
V_STR := SUBSTR(
P_CLOB,
V_START_CHAR,
V_LEN
);
V_START_CHAR := V_START_CHAR + V_LEN;
OPEN P_CUR FOR /* I know this is wrong */
SELECT A , B, C
FROM TAB
WHERE DATE = V_DATE
AND COL = V_STR;
END LOOP;
END PRC;
假設你可以在每個循環迭代中打開遊標;你想用打開的遊標做什麼? – Aleksej
遊標不存儲查詢結果,所以我不確定你想要做什麼。 –
您不能將數據存儲在遊標中;要爲每次使用不同過濾器的迭代運行遊標,您必須使用遊標參數;請參閱例如:https://docs.oracle.com/cloud/latest/db112/LNPLS/static.htm#BABHBHIC – Yellow75