17,086
社区成员
发帖
与我相关
我的任务
分享
DECLARE
TYPE emp_cur IS REF CURSOR;
v_emp_cur emp_cur;
v_emp_record t_myemp%ROWTYPE;
这里不是定义了吗?[/quote]
我的意思是在定义的时候进行初始化,比如:
CURSOR CR IS SELELCT * FROM TEST.
还有一点是用FOR循环不需要再打开游标,[/quote]
能给出详细的格式吗?
DECLARE
TYPE emp_cur IS REF CURSOR;
v_emp_cur emp_cur;
v_emp_record t_myemp%ROWTYPE;
CURSOR v_emp_cur IS SELECT *FROM t_myemp;
这样的方式会报:
PLS-00305: 'V_EMP_CUR' 的前一次使用 (在第 3 行) 与此次使用发生冲突[/quote]
CURSOR v_emp_cur IS SELECT *FROM t_myemp;这种方式其实就是定义一个V_EMP_CUR的游标。之所以报错其实是因为 v_emp_cur emp_cur又定义了一个游标,所以会报错,因为你定义了两个同名的游标DECLARE
TYPE emp_cur IS REF CURSOR;
v_emp_cur emp_cur;
v_emp_record t_myemp%ROWTYPE;
这里不是定义了吗?[/quote]
我的意思是在定义的时候进行初始化,比如:
CURSOR CR IS SELELCT * FROM TEST.
还有一点是用FOR循环不需要再打开游标,[/quote]
能给出详细的格式吗?
DECLARE
TYPE emp_cur IS REF CURSOR;
v_emp_cur emp_cur;
v_emp_record t_myemp%ROWTYPE;
CURSOR v_emp_cur IS SELECT *FROM t_myemp;
这样的方式会报:
PLS-00305: 'V_EMP_CUR' 的前一次使用 (在第 3 行) 与此次使用发生冲突
declare
CURSOR v_emp_cur is SELECT *FROM t_myemp;
begin
...
...
还有1楼的for的另一种方式,
BEGIN
FOR V_EMP_RECORD IN (SELECT * FROM tgp_funds) LOOP
DBMS_OUTPUT.PUT_LINE(V_EMP_RECORD.FND_ID);
END LOOP;
END;
这种方式是建立隐式游标!DECLARE
TYPE emp_cur IS REF CURSOR;
v_emp_cur emp_cur;
v_emp_record t_myemp%ROWTYPE;
这里不是定义了吗?[/quote]
我的意思是在定义的时候进行初始化,比如:
CURSOR CR IS SELELCT * FROM TEST.
还有一点是用FOR循环不需要再打开游标,DECLARE
TYPE emp_cur IS REF CURSOR;
v_emp_cur emp_cur;
v_emp_record t_myemp%ROWTYPE;
这里不是定义了吗?BEGIN
FOR V_EMP_RECORD IN (SELECT * FROM tgp_funds) LOOP
DBMS_OUTPUT.PUT_LINE(V_EMP_RECORD.FND_ID);
END LOOP;
END;