你要返回結果集嗎?
搜索論壇,有非常多的論述了。
一個例子:
create or replace package pkg_test 
as
type cur_test is ref cursor; -- 定義一個cursor的type
end pkg_test;
/
create or replace procedure p_test
(
v_cur out pkg_test.cur_test
)
as
v_sql varchar2(100); -- 
begin
v_sql := 'select a1,a2 from test';
OPEN v_cur FOR v_sql; --
exception
when others then 
DBMS_OUTPUT.PUT_LINE('Error ---------------' || sqlcode || ' : ' || sqlerrm ); 
end p_test;
/

解决方案 »

  1.   

    是的,用游标作一个查询吧,execute immediate str into ...; --只限于一条记录,没有记录与返回多条记录都会出错
      

  2.   

    如果你想返回一条记录,可以加上 where rownum <= 1 的条件。
    如果要返回多条记录(记录集),则可以用游标实现。
    但如果你是在客户端调用,用游标就会显得慢些。
    如果你会PB,一定知道数据窗口,可以用数据窗口读数据,这样比较快些。