在游标遍历时,一定要fetch吗,不可以用cursor.name方式直接取吗(不用for loop的方式)?ref cursor类型游标好像不可以用for loop方式遍历?
open cursor for ‘select......’;
for c1 in cursor loop
dbms_output.put(c1.name);
end loop;一致报cursor 未定义?有人能给一些解释吗?
open cursor for ‘select......’;
for c1 in cursor loop
dbms_output.put(c1.name);
end loop;一致报cursor 未定义?有人能给一些解释吗?
for c1 in select...... loop
dbms_output.put(c1.name);
end loop;
--动态游标在open cursor for sql 打开后,不能再用for..loop
declare
type c_result is ref cursor;
c1 table_name%rowtype;
sqlStr varchar2(100):= 'select * from ....';
begin
open c_result for sqlStr;
loop
fetch c_result into c1;
exit when c_result%notfound;
dbms_output.put(c1.id);
end loop;
close c_result;
end;
但是看了个帖子这样写不知道可行不
DECLARE
cur PLS_INTEGER := DBMS_SQL.OPEN_CURSOR;
fdbk PLS_INTEGER;
BEGIN
DBMS_SQL.PARSE
(cur, 'SELECT * FROM emp WHERE deptno = 10', DBMS_SQL.NATIVE); fdbk := DBMS_SQL.EXECUTE_CURSOR (cur);
FOR Nfetch IN 1 .. 5
LOOP
/* On fetch #5 this will raise ORA-01002 */
fdbk := DBMS_SQL.FETCH_ROWS (cur);
END LOOP;
DBMS_SQL.CLOSE_CURSOR (cur);
END;
来源
for i in cur loop
.....
end loop;
--or
for i in (select col... from tb) loop
...
end loop;