Oracle下如何用sql创建游标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle下如何用sql创建游标相关的知识,希望对你有一定的参考价值。

我用书上给的语句来创建游标
DECLARE cursor_name CURSOR FOR SELECT * from table_name;
可是按下回车之后,没有显示创建成功的类似字样,而是转到了第二行,好像还要再进行输入命令的样子。在进行存贮过程的时候也是出现的这个问题,不知为什么,请高手帮忙解答,谢谢

For 循环游标

(1)定义游标

(2)定义游标变量

(3)使用for循环来使用这个游标

declare
       --类型定义
       cursor c_job
       is
       select empno,ename,job,sal
       from emp
       where job=\'MANAGER\';
       --定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型
       c_row c_job%rowtype;
begin
       for c_row in c_job loop
         dbms_output.put_line(c_row.empno||\'-\'||c_row.ename||\'-\'||c_row.job||\'-\'||c_row.sal);
       end loop;
end;

Fetch游标

使用的时候必须要明确的打开和关闭

declare 
       --类型定义
       cursor c_job
       is
       select empno,ename,job,sal
       from emp
       where job=\'MANAGER\';
       --定义一个游标变量
       c_row c_job%rowtype;
begin
       open c_job;
         loop
           --提取一行数据到c_row
           fetch c_job into c_row;
           --判读是否提取到值,没取到值就退出
           --取到值c_job%notfound 是false 
           --取不到值c_job%notfound 是true
           exit when c_job%notfound;
            dbms_output.put_line(c_row.empno||\'-\'||c_row.ename||\'-\'||c_row.job||\'-\'||c_row.sal);
         end loop;
       --关闭游标
      close c_job;
end;
参考技术A 游标是需要放在pl/sql块中,或者过程函数当中的,不能直接declare创建的 参考技术B 是这样的。。
DECLARE CURSOR Students_cur --声明游标
IS
SELECT name,dob
FROM Students
WHERE specialty = v_specialty;
begin
--其他代码
end;本回答被提问者采纳

以上是关于Oracle下如何用sql创建游标的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 游标简介

Oracle游标sql语句代码块的优化

Oracle游标使用总结

Oracle 游标

Oracle 游标

翻译Oracle游标详细说明