来自过程的Oracle PL / SQL输出查询没有输出参数

时间:2017-11-01 00:51:39

标签: sql oracle stored-procedures plsql

我试图从过程中的选择查询中输出一个表。 本质上,在程序执行时打印查询输出。

例如table:my_table

     A      B
------ ------
     1      6
     2      7
     3      8
     4      9
     5     10 

我可以在没有输出参数的情况下运行类似下面的代码

SQL> create or replace procedure myproc
2       as
3    begin
4       print (select * from my_table;)
5    end;
6    /


Procedure created.


SQL> execute myproc


PL/SQL procedure successfully completed.

     A      B
------ ------
     1      1
     2      2
     3      3
     4      4
     5      5 

1 个答案:

答案 0 :(得分:1)

在Oracle 12c中,您可以使用DBMS_SQL.RETURN_RESULT

完成此操作
CREATE PROCEDURE myproc AS
  cur1 sys_refcursor;
BEGIN
  OPEN cur1 FOR SELECT * FROM my_table;
  DBMS_SQL.RETURN_RESULT(cur1);
END;
/ 

execute myproc;

在12c之前,您可以使用DBMS_SQL执行此操作,但是您需要知道列名称和数据类型。

此链接包含此类实施的详细信息。

http://www.java2s.com/Code/Oracle/System-Packages/Dynamicselectstatementandrowfetch.htm