私は db の経験がありませんが、ストアド プロシージャの結果から列名を取得しようとしています。
ストアド プロシージャが不明なため、コードは汎用でなければなりません。最初のステップは、入力パラメーターのないプロシージャー (io_cursor のみ) で機能するようにすることです。
今までの私のコード:
procedure fakeProc (
io_cursor in out t_ref_cursor
)
そして、私が使用しているコード:
PROCEDURE get_SQL_Fields (
out_result out varchar2)
as
/**/
v_cur NUMBER := NULL;
v_count NUMBER := NULL;
v_tab_desc DBMS_SQL.DESC_TAB;
sqlstr VARCHAR2(100);
BEGIN
v_cur := DBMS_SQL.OPEN_CURSOR;
--Here i get errors
sqlstr :='begin '|| fakeproc()||';end;';
DBMS_SQL.PARSE(v_cur, sqlstr, DBMS_SQL.NATIVE);
DBMS_SQL.DESCRIBE_COLUMNS(v_cur, v_count, v_tab_desc);
FOR i IN 1..v_count LOOP
out_result := out_result||v_tab_desc(i).COL_NAME||',';
END LOOP;
end if;
END get_SQL_Fields;
したがって、今のところ私の問題は、この sqlstr を構築することです。
私が得るエラーは次のとおりです:エラー: PLS-00306: 'FAKEPROC' への呼び出しで引数の数またはタイプが間違っています。行: 654 テキスト: sqlstr :='begin '|| fakeproc()||';end;';
エラー: PL/SQL: ステートメントは無視されました 行: 654 テキスト: sqlstr :='begin '|| fakeproc()||';end;';