私の手順
CREATE OR REPLACE PROCEDURE my_procedure(res OUT SYS_REFCURSOR , p_LstKH CLOB)
AS
CURSOR c_dsKH
IS
SELECT TO_NUMBER(REGEXP_SUBSTR(p_LstKH,'[^,]+', 1, level)) value FROM dual
CONNECT BY REGEXP_SUBSTR(p_LstKH, '[^,]+', 1, level) IS NOT NULL;
BEGIN
...
END;
長い文字列 p_LstKH を分割して、CURSOR c_dsKH に入れたいと思います。例: p_LstKH = '1,2,....,10000'
c_dsKH.value
1
2
...
10000
しかし、その手順を実行すると、「操作で接続するためのメモリが不足しています」というエラーが表示されます。パラメータ p_LstKH CLOB を p_LstKH VARCHAR2 に置き換えようとすると、他のエラー「ORA-06502: PL/SQL: 数値または値エラー: 文字列バッファが小さすぎます」が発生します。
私は今どうすればいい ?簡単に言えば、長い文字列を分割したいと思います。皆さんありがとう !