我对 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;';