开发者

How can I print a multi line result using PL/SQL?

开发者 https://www.devze.com 2023-01-25 06:43 出处:网络
PROCEDURE A( ... BEGIN stmt := \'select开发者_如何学编程 * from \'||src; execute immediate stmt; dbms_output.put_line(??);
PROCEDURE A(
...
BEGIN
stmt := 'select开发者_如何学编程 * from '||src;
execute immediate stmt;
dbms_output.put_line(??);
END A;


If you know the structure of the table named in "src" when writing the code then you can do this:

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;

If you will not know the structure until run time then you will need to use the DBMS_SQL package, which is very powerful but not simple.


I'm not sure wether this is working with your "execute immediate stmt" approach, but with static Sql, following is working for me:

  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;
0

精彩评论

暂无评论...
验证码 换一张
取 消