gpt4 book ai didi

sql - Oracle Sql : How can I output a table from procedure

转载 作者:行者123 更新时间:2023-12-04 14:44:20 25 4
gpt4 key购买 nike

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

我想写一个这样的程序:

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

所以当我做 EXECUTE B;
它应该输出表A

发生在 select * from A;
看到我尝试了其他答案,但对我不起作用,这就是我发布此问题的原因

最佳答案

SQL Server(我相信你指出你来自不同的问题)与 Oracle 不同。你不能只有一个执行查询的过程。

你可以定义你的程序来拥有一个 OUT类型参数 SYS_REFCURSOR .

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 中使用它。查询的子句。

关于sql - Oracle Sql : How can I output a table from procedure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18902765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com