gpt4 book ai didi

Oracle SQL Developer PL/SQL 返回一个数组

转载 作者:行者123 更新时间:2023-12-02 07:20:15 25 4
gpt4 key购买 nike

开发人员,

我已尽我所能进行搜索,但找不到解决这个简单问题的方法。

情况:

我需要编写一个过程,它将列名作为输入,并返回该列中存在的所有不同值作为输出。然后我必须在一些 C# 代码中使用这个过程。

在 MS 服务器中,这非常容易,因为它会直接给出结果集,这与 PL/SQL 中不同。

我可以编写的脚本(这没有给我我需要的结果):

CREATE OR REPLACE
PROCEDURE GetCol(PARAM IN STRING, recordset OUT sys_refcursor)
AS
BEGIN
OPEN recordset FOR
SELECT DISTINCT(PARAM)
FROM my_table;
END

;

当我尝试使用以下代码检查记录集中的数据时:

DECLARE
l_cursor SYS_REFCURSOR;
l_sname VARCHAR2(50);
BEGIN
GetCol('col_name',l_cursor);
LOOP
FETCH l_cursor INTO l_sname;
EXIT WHEN l_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(l_sname);
END LOOP;
CLOSE

有人可以帮我解决这个代码吗?

最佳答案

您还可以打开字符串值的 ref_cursor。请看一下这个:

CREATE OR REPLACE PROCEDURE GetCol(PARAM IN VARCHAR2, recordset OUT sys_refcursor)
AS
QRY varchar2(100);
BEGIN
QRY := 'SELECT DISTINCT '||PARAM||' FROM my_table';
OPEN recordset FOR QRY;
END;

然后:

DECLARE
l_cursor SYS_REFCURSOR;
l_sname VARCHAR2(50);
BEGIN
GetCol('col_name',l_cursor);
LOOP
FETCH l_cursor INTO l_sname;
EXIT WHEN l_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(l_sname);
END LOOP;
END;

关于Oracle SQL Developer PL/SQL 返回一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28371414/

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