【问题标题】:Oracle PL/SQL Output Query from Procedure without output argument没有输出参数的过程中的 Oracle PL/SQL 输出查询
【发布时间】:2017-11-01 00:51:39
【问题描述】:

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

例如表: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 

【问题讨论】:

  • 在程序中不可能。您可以使用function 代替Procedure 并满足您的要求。

标签: sql oracle stored-procedures plsql


【解决方案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

【讨论】:

  • 感谢您的快速响应!我最终不得不使用类似于您提供的链接中的实现。很遗憾,我们使用的系统还没有更新到 12c。
猜你喜欢
  • 2015-02-24
  • 2010-12-01
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多