zoukankan      html  css  js  c++  java
  • PL/SQL学习笔记

    一、什么是PL/SQL?

      PL/SQL直接翻译就是过程语言的sql,就是将编程语言中的语句放到数据库层面来执行,是oracle数据库对sql语言的过程化扩展,使sql语言具有了过程化处理的能力。

    二、PL/SQL的程序结构?

      declare

        说明部分(变量说明、光标说明、例外说明)

      begin

        语句序列(DML语句)

      exception

        例外处理语句

      end;

      /

      1、说明部分

        基本变量类型:char,varchar2,data,number,boolean,long

        

    declare
      pnumber number(7,2);
      pname varchar2(20);
      pdate date;
    begin
      pnumber:=12;
      pname:='张三';
      pdate:=sysdate;
        dbms_output.put_line(pnumber);
        dbms_output.put_line(pname);
        dbms_output.put_line(pdate+1);
    end;
    /

        引用型变量:

        eg: my_yhdm  acl_user.yhdm%type;

        

    declare
      pxm acl_user.xm%type;
      psfzh acl_user.sfzmhm%type;
    begin
        select xm,sfzmhm into pxm,psfzh from acl_user where yhdm = '106030';
        dbms_output.put_line(pxm||','||psfzh);
    end;
    /

        记录型变量:

        eg: user_rec  acl_user%rowtype;

        

    declare
      user_rec acl_user%rowtype;
    begin
        select * into user_rec from acl_user where yhdm = '106090';
        dbms_output.put_line(user_rec.xm||','||user_rec.sfzmhm);
    end;
    /

      2、if 语句

      

    set serveroutput on 
    accept num prompt'请输入一个数字';
    declare
        pnum number:=#
    begin
        if pnum = 1 then dbms_output.put_line('输入的是1');
          elsif pnum=2 then dbms_output.put_line('输入的是2');
          elsif pnum=3 then dbms_output.put_line('输入的是3');
          else dbms_output.put_line('输入的是其他数字');
        end if;
    end;
    /

      3、循环语句

    --while循环
    declare
    pnum number :=1;
    begin
        while pnum <=10 loop
            dbms_output.put_line(pnum);
            pnum:=pnum+1;
        end loop;
    end;
    /

     

    --loop循环(推荐使用,控制光标方便)
    set serveroutput on
    declare
        pnum number :=1;
    begin
     loop
        exit when pnum>10;
        dbms_output.put_line(pnum);
        pnum:=pnum+1;
     end loop;
    end;
    /
    --for循环
    set serveroutput on
    declare
     pnum number:=1;
    begin
        for pnum in 1..10 loop
        dbms_output.put_line(pnum);
        end loop;
    end;
    /

     三、PL/SQL游标

      游标就是一个结果集(Result Set)

      eg:定义游标:cursor c1 is select yhdm from acl_user;

        打开游标:open c1;

        使用游标:fetch c1 into pyhdm;

        关闭游标:close c1;

      

    --游标的使用
    set serveroutput on 
    declare
      --定义一个游标
      cursor cuser is select xm,sfzmhm from acl_user; 
      --定义游标对应的变量
      pxm acl_user.xm%type;
      psfzmhm acl_user.sfzmhm%type;
    begin
        --打开游标
        open cuser;
        loop
         fetch cuser into pxm,psfzmhm;
         exit when cuser%notfound;
         dbms_output.put_line(pxm||','||psfzmhm);
        end loop;
        --关闭游标
        close cuser;
    end;
    /
    --游标的使用
    set serveroutput on 
    declare
      --定义一个游标
      cursor cuser is select yhdm,qsip,zzip from acl_user; 
      --定义游标对应的变量
      pyhdm acl_user.yhdm%type;
      pqsip acl_user.qsip%type;
      pzzip acl_user.zzip%type;
    begin
        --打开游标
        open cuser;
        loop
         fetch cuser into pyhdm,pqsip,pzzip;
         exit when cuser%notfound;
         if pqsip is null then update acl_user set zzip = '18330108506' where yhdm = pyhdm;
         end if;
        end loop;
        
        --关闭游标
        close cuser;
        --提交
        commit;
    end;
  • 相关阅读:
    Docker大行其道—镜像
    Google 推出全新的两步验证机制
    安全警告——“Windows已经阻止此软件因为无法验证发行者”解决办法
    Word2010 自动生成二级编号
    正则表达式判断汉字
    c# IList<T> 深拷贝
    C#IList 取区间数据
    Oracle 同环比排除分母0
    Git 删除服务器的远程分支
    【转】C#获取当前路径7种方法
  • 原文地址:https://www.cnblogs.com/lmspl/p/12579684.html
Copyright © 2011-2022 走看看