【问题标题】:How can I print a multi line result using PL/SQL?如何使用 PL/SQL 打印多行结果?
【发布时间】:2010-11-15 05:48:53
【问题描述】:
PROCEDURE A(
...
BEGIN
stmt := 'select * from '||src;
execute immediate stmt;
dbms_output.put_line(??);
END A;

【问题讨论】:

  • @OMG: 调用这个 PL/SQL 过程的结果已经被重定向到一个文件。

标签: sql stored-procedures plsql


【解决方案1】:

如果您在编写代码时知道“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 包,它非常强大但并不简单。

【讨论】:

    【解决方案2】:

    我不确定这是否适用于您的“立即执行 stmt”方法,但使用静态 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-11
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 2021-12-01
      • 1970-01-01
      相关资源
      最近更新 更多