zoukankan      html  css  js  c++  java
  • Oracle游标cursor2显示的游标等

    --在一中我们介绍了实现过程
    select *from stud;
    declare
    cursor mycur is select id,name from stud;--1声明
    v_id integer;
    v_name varchar(30);
    begin
    open mycur;--2打开游标
    loop--3遍历
    fetch mycur into v_id,v_name;
    exit when mycur%notfound;--找不到数据退出
    --显示数据
    DBMS_OUTPUT.PUT_LINE('编号'||v_id||'姓名'||v_name);
    end loop;
    if mycur%isopen then --5确定关闭
    DBMS_OUTPUT.PUT_LINE('正常关闭');
    close mycur;
    else 
    SYS.DBMS_OUTPUT.PUT_LINE('已经关闭');
    end if;
    exception --4关闭
    when others then
    SYS.DBMS_OUTPUT.PUT_LINE('异常关闭');
    close mycur;
    end;
    
    --记录集类型
    
    declare
       --声明游标
       cursor cur is select * from stud;
       --声明记录集类型
       res_stud stud%rowType;
    begin
       --打开游标
       open cur;
       --遍历
       loop
          --直接将每一次获取的值,放到记录集中去
          fetch cur into res_stud;
          exit when cur%notfound;
          --输出
          dbms_output.put_line('id '||res_stud.id||' name is:'||res_stud.name);
       end loop;
       close cur;
    end;
    ------------------------------
    --直接使用 for in
    --不用打开
    DECLARE
    CURSOR mycur1 is select * from stud;
    begin
     for vv in mycur1 loop
     SYS.DBMS_OUTPUT.PUT_LINE('编号'||vv.id||''||'姓名'||vv.name);
     end loop;
     end;
    --隐式
    
    begin
     for vv in (select * from stud) loop
     SYS.DBMS_OUTPUT.PUT_LINE('编号'||vv.id||''||'姓名'||vv.name);
     end loop;
     end;
    
    ----接受参数的游标
    /*
    1,工具接受 
    ...where id=&id;
    2。在游标申明时给定参数
    在plsql块中使用
    3。在procedure过程中使用游标
    
    */
    
    
    --2
    accept iid prompt '输入id值';
    declare
    cursor mycur2(p_id integer)is select * from stud where id>p_id;
    v_stud stud%rowType;
    begin
    open mycur2(&iid);
    loop
    fetch mycur2 into v_stud;
    exit when mycur2%notfound;
    DBMS_OUTPUT.PUT_LINE(v_stud.id||''||v_stud.name);
    end loop;
    close mycur2;
    end;
    
    
    
    --3过程中使用
    --声明一个接收参数的游标
    --一个要求,sql语句是动态的
    
    create or replace procedure px1(px_id integer)
    as
      cursor cc(p_id integer) is select * from stud where id>p_id;
      v_stud stud%rowType;
    begin
       --自己显式的打开,在这儿可以接收参数
       open cc(px_id);
       loop 
           fetch cc into v_stud;
           exit when cc%notfound;
           dbms_output.put_line(v_stud.id||v_stud.name);
       end loop;
       close cc;
    end;
    --调用
    set serveroutput on;
    begin
      px1(4);
    end;
    -----------------------------------------------------------------------------
    --删除用户创建的所有表-----------慎用仅作讲解
    --声明一个过程
    set serveroutput on;
    create or replace procedure dropall
    as
       --声明一个cursor,查询用户的所有表
      cursor cur is select table_name from user_tables;
      --声明一个变量保存表名
      v_tabname user_tables.table_name%type;
    begin
       open cur;
       loop
          fetch cur into v_tabname;
          exit when cur%notfound;
          dbms_output.put_line(v_tabname);
          --组成sql--在sql块中,是不可以执行DDL
          execute immediate 'drop table '||v_tabname||' purge';
       end loop;
       close cur;
    end;
    
    
    create table studsss(id int);
    drop table stud purge;
    select * from tab;
    purge recyclebin;
    
    select * from dba_users;
    
    begin
      dropall();
    end;
  • 相关阅读:
    替换掉一段 以 $ 开头 $ 结尾 的字符串
    react 中使用 codemirror2(在线代码编辑器)读取 yaml 文件
    第四篇:前端读取文件 | FileReader 对象及其属性
    umi 如何使用 Mock 模拟数据
    loading 动画 系列
    网站页面上标签页小图标的添加方式
    Linux tail命令
    Python实现字符串反转的方法
    Redis 配置远程访问
    消息队列
  • 原文地址:https://www.cnblogs.com/xiaweifeng/p/3681611.html
Copyright © 2011-2022 走看看