• Oracle游标


    --游标
    --今天的任务  3个  
    --  1 上节课结尾的时候
    -- 函数 没讲完  补一下
    -- 2  游标 
    --新的学习
    -- 3  作业
    -- 简单说一下
    -- 我基本上没布置过
    -- 1 布置作业
    -- 2 把所有的上课讲的笔记全部发给你们
    -- 3 作业一共12次  全部发给你们  给一周的时间做
    
    --游标
    --1 游标的创建
    CURSOR SURSOR_name is cudr(语句)
    --2 游标的打开
    open SURSOR_name;
    --3 游标的读取
    FETCH SURSOR_name INTO SURSU存储变量
    --4 游标的关闭
    close SURSOR_name;
    
    -- 注意  这个开关 默认是关闭的
    SET SERVEROUTPUT ON
    
    DECLARE
    CURSOR SURSOR_student is 
    select *
    from student;
    
    s student%ROWTYPE;     -- : 创建了一共student的变量s
    BEGIN  
    --2 游标的打开
    open SURSOR_student;
    --3 游标的读取
    FETCH SURSOR_student INTO s;
    --4 游标的关闭
    close SURSOR_student;
    --打印内容
    DBMS_OUTPUT.PUT_LINE('学生姓名:'||s.sname);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生性别:'||s.ssex);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生年龄:'||s.sage);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生学号:'||s.sno);  --换行打印
    END;   
    /
    
    
    -- 带loop 的游标
    
    -- 注意  这个开关 默认是关闭的
    SET SERVEROUTPUT ON
    
    DECLARE
    CURSOR SURSOR_student1 is 
    select *
    from student;
    s student%ROWTYPE;     -- : 创建了一共student的变量s
    BEGIN  
    --2 游标的打开
    open SURSOR_student1;
    loop
    --3 游标的读取
    FETCH SURSOR_student1 INTO s;
    exit when SURSOR_student1 %notfound;
    --打印内容
    DBMS_OUTPUT.PUT_LINE('学生姓名:'||s.sname);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生性别:'||s.ssex);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生年龄:'||s.sage);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生学号:'||s.sno);  --换行打印
    end loop;
    --4 游标的关闭
    close SURSOR_student1;
    
    END;   
    /
    
    SET SERVEROUTPUT ON
    DECLARE
    CURSOR SURSOR_student1 is 
    select sname,ssex,sage,sno
    from student;
    --where sno='s001';
    --s student%ROWTYPE;     -- : 创建了一共student的变量s
    no varchar2(10) ;
    name varchar2(20);
    age number(2);
    sex varchar2(5);
    BEGIN  
    --2 游标的打开
    open SURSOR_student1;
    loop
    --3 游标的读取
    FETCH SURSOR_student1 INTO name,sex,age,no;
    exit when SURSOR_student1 %notfound;
    --打印内容
    DBMS_OUTPUT.PUT_LINE('学生姓名:'||name);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生性别:'||sex);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生年龄:'||age);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生学号:'||no);  --换行打印
    end loop;
    --4 游标的关闭
    close SURSOR_student1;
    
    END;   
    /
    
    /*
    
    SET SERVEROUTPUT ON
    
    DECLARE
    
    CURSOR SURSOR_student1 is 
    select sname,ssex,sage,sno
    from student;
    --where sno='s001';
    --s student%ROWTYPE;     -- : 创建了一共student的变量s
    -- 创建了游标  这个游标是查询语句
    
    
    no varchar2(10) ;
    name varchar2(20);
    age number(2);
    sex varchar2(5);
    
    --定义了4个变量用于后面的存储
    
    BEGIN  
    --2 游标的打开
    open SURSOR_student1;
    loop
    --3 游标的读取
    FETCH SURSOR_student1 INTO name,sex,age,no;
    
    
    exit when SURSOR_student1 %notfound;
    --退出条件  当游标读取为空的时候退出游标的循环读取
    
    --打印内容
    DBMS_OUTPUT.PUT_LINE('学生姓名:'||name);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生性别:'||sex);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生年龄:'||age);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生学号:'||no);  --换行打印
    end loop;
    
    
    --4 游标的关闭
    close SURSOR_student1;
    
    END;   
    /
    */
    
    
    SET SERVEROUTPUT ON
    
    DECLARE
    CURSOR SURSOR_student1 is 
    select *
    from student;
    --where sno='s001';
    s student%ROWTYPE;     -- : 创建了一共student的变量s
    BEGIN  
    --2 游标的打开
    open SURSOR_student1;
    loop
    --3 游标的读取
    FETCH SURSOR_student1 INTO s;
    exit when SURSOR_student1 %notfound;
    --打印内容
    DBMS_OUTPUT.PUT_LINE('学生姓名:'||s.sname);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生性别:'||s.ssex);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生年龄:'||s.sage);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生学号:'||s.sno);  --换行打印
    end loop;
    --4 游标的关闭
    close SURSOR_student1;
    
    END;   
    /
    
    
    -- 使用 cursor for loop 循环读取游标的信息
    DECLARE
    CURSOR SURSOR_student1 is 
    select *
    from student;
    --where sno='s001';
    BEGIN  
    for i in SURSOR_student1 loop
    DBMS_OUTPUT.PUT_LINE('学生姓名:'||i.sname);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生性别:'||i.ssex);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生年龄:'||i.sage);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生学号:'||i.sno);  --换行打印
    END loop;
    END;   
    /
    
    
    -- 带参数的游标
    
    SET SERVEROUTPUT ON
    
    DECLARE
    no student.sno%type:= 's005';
    s student%ROWTYPE;     -- : 创建了一共student的变量s
    
    CURSOR SURSOR_student(v_sno varchar2)  --括号里面是形参内容
    is 
    select *
    from student
    where sno = v_sno;
    
    BEGIN  
    --2 游标的打开
    open SURSOR_student(no);
    --3 游标的读取
    FETCH SURSOR_student INTO s;
    --4 游标的关闭
    close SURSOR_student;
    --打印内容
    DBMS_OUTPUT.PUT_LINE('学生姓名:'||s.sname);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生性别:'||s.ssex);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生年龄:'||s.sage);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生学号:'||s.sno);  --换行打印
    END;   
    /
    
    
    -- 带参数的循环游标
    
    DECLARE
    no student.sno%type:= 's00%';
    s student%ROWTYPE;     -- : 创建了一共student的变量s
    
    CURSOR SURSOR_student(v_sno varchar2)  --括号里面是形参内容
    is 
    select *
    from student
    where sno like v_sno;
    
    BEGIN  
    for i in SURSOR_student(no) loop
    DBMS_OUTPUT.PUT_LINE('学生姓名:'||i.sname);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生性别:'||i.ssex);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生年龄:'||i.sage);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生学号:'||i.sno);  --换行打印
    END loop;
    END;   
    /
    
    SET SERVEROUTPUT ON
    DECLARE
    vv_no varchar2(10):='s00%';
    vv_sex varchar2(5):='男';
    CURSOR SURSOR_student1 (v_no varchar2,v_sex varchar2)
    is 
    select sname,ssex,sage,sno
    from student
    where sno like v_no and
          ssex=v_sex;
    --s student%ROWTYPE;     -- : 创建了一共student的变量s
    no varchar2(10) ;
    name varchar2(20);
    age number(2);
    sex varchar2(5);
    BEGIN  
    --2 游标的打开
    open SURSOR_student1(vv_no,vv_sex);
    loop
    --3 游标的读取
    FETCH SURSOR_student1 INTO name,sex,age,no;
    exit when SURSOR_student1 %notfound;
    --打印内容
    DBMS_OUTPUT.PUT_LINE('学生姓名:'||name);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生性别:'||sex);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生年龄:'||age);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生学号:'||no);  --换行打印
    end loop;
    --4 游标的关闭
    close SURSOR_student1;
    
    END;   
    /
    
    DECLARE
    no student.sno%type:= 's00%';
    sex student.ssex%type:='女';
    s student%ROWTYPE;     -- : 创建了一共student的变量s
    
    CURSOR SURSOR_student(v_sno varchar2,v_ssex varchar2)  --括号里面是形参内容
    is 
    select *
    from student
    where sno like v_sno and ssex=v_ssex;
    
    BEGIN  
    for i in SURSOR_student(no,sex) loop
    DBMS_OUTPUT.PUT_LINE('学生姓名:'||i.sname);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生性别:'||i.ssex);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生年龄:'||i.sage);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生学号:'||i.sno);  --换行打印
    END loop;
    END;   
    /
    
    --隐式游标
    
    DECLARE
    no student.sno%type:= 's001';
    --sex student.ssex%type:='女';
    s student%ROWTYPE;     -- : 创建了一共student的变量s
    
    BEGIN  
    select * 
    into s
    from student
    where sno = no;
    --where sno like no and ssex=sex;
    if SQL%found then
    DBMS_OUTPUT.PUT_LINE('学生姓名:'||s.sname);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生性别:'||s.ssex);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生年龄:'||s.sage);  --换行打印
    DBMS_OUTPUT.PUT_LINE('学生学号:'||s.sno);  --换行打印
    end if;
    END;   
    /
    
    
    %found  -- 更删改查是否影响到数据     判断sql 是否执行成功
    %notfound  -- 判断sql 语句是否执行失败
    每个人都是在努力的路上,别因为别人的误解而放弃,,术业有专攻,如是而已。
  • 相关阅读:
    Asp.net读取AD域信息的方法(一)
    登录时记住用户名和密码及cookie案例应用
    Web项目,要求:保存用户名和密码在Cookie中,下次登录不再重新输入
    ASP.net 学习路线(详细)
    vs调试技巧(二)
    vs断点调试技巧(一)
    flexPaper +swftools实现文档在线阅读
    OC 类 的声明
    OC extern和函数
    OC extern和变量
  • 原文地址:https://www.cnblogs.com/16699qq/p/13153490.html
Copyright © 2020-2023  润新知