加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle Sql:如何从过程输出表

发布时间:2021-01-20 23:38:30 所属栏目:站长百科 来源:网络整理
导读:我有一张桌子A(a1,a2,a3); 我想写一个这样的程序: CREATE OR REPLACE PROCEDURE BASBEGIN...................SELECT * FROM A;END 这样当我做EXECUTE B时; 它应该输出表A. 如在select * from A中所发生的那样; 看到我尝试了其他答案,但它不适合我,这就是我

我有一张桌子A(a1,a2,a3);

我想写一个这样的程序:

CREATE OR REPLACE PROCEDURE B
AS
BEGIN
.........
..........
SELECT * FROM A;
END

这样当我做EXECUTE B时;

它应该输出表A.

如在select * from A中所发生的那样;

看到我尝试了其他答案,但它不适合我,这就是我发布这个问题的原因

解决方法

SQL Server(我相信你表示你来自另一个问题)与Oracle不同.您不能只有一个执行查询的过程.

您可以将过程定义为具有SYS_REFCURSOR类型的OUT参数.

CREATE OR REPLACE PROCEDURE b( p_rc OUT SYS_REFCURSOR )
AS
BEGIN
  OPEN p_rc 
   FOR SELECT *
         FROM a;
END;

然后,您的过程的调用者需要知道如何从该引用游标获取并对结果执行有意义的操作.如果您使用的是SQL * Plus

SQL> variable rc refcursor;
SQL> exec b( :rc );
SQL> print rc

如果您使用的不是SQL * Plus,代码可能会有所不同.

或者,您的过程可以返回PL / SQL集合.或者它可以是流水线表函数而不是过程,在这种情况下,您可以在查询的FROM子句中使用它.

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读