gpt4 book ai didi

sql - 在过程中将查询结果提取到游标中

转载 作者:行者123 更新时间:2023-12-04 13:43:40 25 4
gpt4 key购买 nike

我正在将许多过程从 MySQL 迁移到 oracle,我发现了一些问题。这是我到目前为止所得到的:

CREATE OR REPLACE PROCEDURE PROCEDURE1(PROCEDURE_PARAM IN NUMBER)
IS
CURSOR C1 (CURSOR_PARAMETER IN NUMBER)
IS
SELECT COL1, COL2, MY_FUNCTION1(P1), SUM(COL3), MY_FUNCTION2(P1,P2)
COL4, MY_FUNCTION(P1,P2,P3,P4)
FROM TABLE_1
WHERE COL1 = CURSOR_PARAMETER -- How to reference it to 'Procedure_param' ?
GROUP BY COL1, COL2, COL4
ORDER BY COL2;

BEGIN
-- HOW TO FETCH RESULTS INTO CURSOR ??
END PROCEDURE1;
/

这些是名称列和函数(用户创建的函数)的示例。我关心的是如何告诉游标参数 CURSOR_PARAMETERPROCEDURE_PARAM 相同,也是最重要的,如何将结果提取到游标中?我陷入了这个问题。任何帮助,将不胜感激。通过这个示例,我可以开始转换我必须转换的所有过程。

最好的问候。

最佳答案

你会像这样从游标中获取:

BEGIN
for r_row in C1(PROCEDURE_PARAM)
loop
dbms_output.put_line(r_row.col1);--or whatever you want to do here.
end loop;
end;

虽然我通常更喜欢将这些内联写为

begin
for r_row in (SELECT COL1, COL2, MY_FUNCTION1(P1),
SUM(COL3), MY_FUNCTION2(P1,P2)
COL4, MY_FUNCTION(P1,P2,P3,P4)
FROM TABLE_1
WHERE COL1 = PROCEDURE_PARAM
GROUP BY COL1, COL2, COL4
ORDER BY COL2)
loop
...
end loop;

这样我就不必向上滚动到光标定义来查看它实际在做什么。

关于sql - 在过程中将查询结果提取到游标中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14718730/

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