我正在尝试在循环中执行动态选择,但我没有得到任何结果。我想让它像正常选择一样工作。
create or replace type proc_args as varray(20) of varchar2(50);
/
create or replace procedure proc_show_tab(args proc_args)
is
id_kursora integer;
wart integer;
polecenie varchar2(30);
begin
for i in 1..args.count loop
polecenie := 'SELECT * FROM '||args(i);
execute immediate polecenie;
end loop;
end;
/
show error;
declare
args2 proc_args;
begin
args2 := proc_args();
args2.extend(2);
args2(1) := 'osrodek';
args2(2) := 'trasa';
proc_show_tab(args2);
end;
/
答案 0 :(得分:5)
PL / SQL在如何将数据返回到执行客户端方面与T-SQL不同。 SQL SELECT语句在代码中执行两次,但不会将结果返回给任何东西 - 要将数据返回给客户端,您需要显式返回REF CURSOR(并且客户端需要知道您是)或使用DBMS_OUTPUT.put_line或类似的东西在“输出”中显示结果。当你完成“匿名块”时,意味着你的块完成没有错误。
如何返回结果将取决于您要完成的任务。