我是 oracle 的新手,我正在学习游标。我的表 City 有两列 city_id,city_name。所以,这就是我尝试的:
DECLARE
CURSOR city_list is
SELECT * from OT.City;
v_list SYS_REFCURSOR;
BEGIN
OPEN city_list FOR
v_list := city_list;
DBMS_OUTPUT.PUT_LINE(v_list.city_id);
EXIT WHEN city_list%NOTFOUND;
CLOSE city_list;
END;
/
我试图将游标的数据分配给新声明的值
v_list SYS_REFCURSOR;
.但输出在 v_list := city_list;
处作为错误出现.如何将游标的所有值直接分配给另一个游标或有其他方法吗?
最佳答案
您仍然可以使用 SYS_REFCURSOR
通过位于 OPEN
之间和 FOR
子句,然后是光标,然后
需要添加LOOP FETCH INTO... END LOOP
模板并在当前代码后关闭打开的游标:
DECLARE
v_list SYS_REFCURSOR;
v_city_id city.city_id%TYPE;
v_city_name city.city_name%TYPE;
BEGIN
OPEN v_list FOR
SELECT city_id, city_name FROM City;
LOOP
FETCH v_list
INTO v_city_id, v_city_name;
EXIT WHEN v_list%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(v_city_id || ' - ' || v_city_name);
END LOOP;
CLOSE v_list;
END;
/
Demo
关于sql - 如何在oracle中打印游标值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58156461/