Oracle Sql:如何从过程输出表

我有一张桌子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子句中使用它.

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...