gpt4 book ai didi

sql - 引用匿名 block 中的游标

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

如果返回多个值,如何引用游标的特定值?

DECLARE
X INTEGER;
CURSOR c1 IS SELECT col1, col2, col3.....;
BEGIN
OPEN c1;
LOOP
EXIT WHEN c1%NOTFOUND;
FETCH (col2 from c1) INTO X;
END LOOP;
END;

最佳答案

你为什么要?据推测,如果您在游标声明中选择三列,则代码中需要所有三列,因此您需要将所有三列提取到三个单独的局部变量中,即

DECLARE
x integer;
y integer;
z integer;
CURSOR c1
IS SELECT column1, column2, column3
FROM some_table;
BEGIN
OPEN c1;
LOOP
FETCH c1
INTO x, y, z;
EXIT WHEN c1%NOTFOUND;
END LOOP;
CLOSE c1;
END;

或者,您可以根据游标声明声明一个记录类型并获取到该类型
DECLARE
CURSOR c1
IS SELECT column1, column2, column3
FROM some_table;
c1_rec c1%ROWTYPE;
BEGIN
OPEN c1;
LOOP
FETCH c1
INTO c1_rec;
dbms_output.put_line( c1_rec.column2 );
EXIT WHEN c1%NOTFOUND;
END LOOP;
CLOSE c1;
END;

您还可以完全摆脱显式循环,这通常是首选方法,因为您不必担心游标泄漏,并且(在现代版本中)Oracle 可以自动为您进行批量收集
DECLARE
CURSOR c1
IS SELECT column1, column2, column3
FROM some_table;
BEGIN
FOR c1_rec IN c1
LOOP
dbms_output.put_line( c1_rec.column2 );
END LOOP;
END;

关于sql - 引用匿名 block 中的游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9437613/

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