1
PROCEDURE A(
...
BEGIN
stmt := 'select * from '||src;
execute immediate stmt;
dbms_output.put_line(??);
END A;
PROCEDURE A(
...
BEGIN
stmt := 'select * from '||src;
execute immediate stmt;
dbms_output.put_line(??);
END A;
如果你知道表的命名结构在“SRC”写代码的时候,那么你可以这样做:
PROCEDURE A IS
...
l_cur sys_refcursor;
BEGIN
stmt := 'select * from '||src;
open l_cur for stmt;
loop
fetch l_cur into ??; -- record or list of variables that matches columns of "src"
exit when l_cur%notfound;
dbms_output.put_line(??);
end loop;
close l_cur;
END A;
如果你不知道这个结构,直到运行时,那么你将需要使用DBMS_SQL包,这是非常强大的,但并不简单。
我不知道这个阉正与你的“执行即时语句”的做法,但静态SQL,以下为我工作:
for my_result in
(
select * from my_table tbl
where ...
order by tbl.my_id_col
) loop
dbms_output.put_line(my_result.field1 || ', ' || my_result.field2 || ...);
end loop;
@OMG:调用此PL/SQL过程的结果已被重定向到一个文件。 – Moeb 2010-11-15 06:10:33