如何使用PL/SQL打印多行结果?

如何使用PL/SQL打印多行结果?,sql,stored-procedures,plsql,Sql,Stored Procedures,Plsql,我不确定这是否适用于您的“立即执行stmt”方法,但对于静态Sql,以下内容适用于我: PROCEDURE A( ... BEGIN stmt := 'select * from '||src; execute immediate stmt; dbms_output.put_line(??); END A; 如果在编写代码时知道“src”中命名的表的结构,则可以执行以下操作: for my_result in ( select * from my_table tbl

我不确定这是否适用于您的“立即执行stmt”方法,但对于静态Sql,以下内容适用于我:

PROCEDURE A(
...
BEGIN
stmt := 'select * from '||src;
execute immediate stmt;
dbms_output.put_line(??);
END A;

如果在编写代码时知道“src”中命名的表的结构,则可以执行以下操作:

  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过程的结果已重定向到一个文件。
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;