PL/SQL で単純なストアド プロシージャを作成して、同等の処理を実行しました。
SELECT * FROM tablename
参照カーソルを返す手順は次のとおりです
create or replace
procedure proc_name (outVal OUT sys_refcursor) as
myCursor sys_refcursor;
myRecords records%ROWTYPE;
l_sql VARCHAR(2000);
begin
l_sql := 'SELECT * FROM RECORDS';
open myCursor for l_sql;
loop
FETCH myCursor INTO myRecords;
EXIT WHEN myCursor%NOTFOUND;
"DBMS_OUTPUT.put_line('myRecords.name =' || myRecords.name);"
end loop;
close myCursor;
end;
コードに引用符で囲まれた行を含めずにSQLコマンドプロンプトでプロシージャを実行したい場合は、この方法で実行します
VARIABLE cr REFCURSOR
EXEC proc_name(:cr)
今、私はプロンプトが表示されます
PL/SQL procedure successfully completed
コマンドを実行しようとすると
print cr;
エラーが発生する
ORA-24338: Statement handle not executed
これで私を助けてください。ストアド プロシージャによって返されたこの参照カーソルだけを使用して、テーブルを印刷する方法を知る必要があります。私は手順自体に何も出力したくないので、手順から引用符で囲まれた行をまとめて削除したいと考えています。