zoukankan      html  css  js  c++  java
  • plsql结构定义,复合类型,行类型和列类型,逻辑控制语句

    一:plsql结构定义 
     


        PL/SQL(Procedural Language/SQL):过程化编程语言 
     


       Oracle对标准SQL语言的过程化扩充 
     


       用来编写包含SQL语句的程序,加入业务逻辑处理功能。 
     


       PL/SQL程序由块组成,每一个块都包含有PL/SQL和SQL语句。块的结构如下: 
     


           [ 
     


               declare 变量名  类型;--声明变量 
     


                  变量名 类型; 
     


            ] 
     


            begin 
     


              [过程语句] 
     


              [exception when 异常类型 then 过程语句] 
     


            end; 
     


        举例:     
     


        /** 
     


          等价 
     


         { 
     


             System.out.println('helloworld') 
     


          } 
     


        **/ 
     


        begin   --等价于{ 
     


           dbms_output.put_line('helloworld'); 
     


        end;    --等价于} 
     


         
     


        --带变量的plsql定义 
     


       declare userid number; 
     


        begin 
     


          --变量的赋值 可以通过 变量名:=值 
     


         userid:=1; 
     


          dbms_output.put_line(userid); 
     


        end; 
     


        --带异常的plsql定义 
     


       declare userid number; 
     


        begin 
     


          --变量的赋值 可以通过 变量名:=值 
     


         userid:=1/1; 
     


          dbms_output.put_line(userid); 
     


          --异常的定义  when 异常类型  then 异常处理的代码块 
     


         exception when others then 
     


             dbms_output.put_line('出现异常'); 
     


        end; 
     


    二 :复合类型 
     


       --在过程中调用函数和存储过程 
     


    declare curdate date:=sysdate; 
     


    curDateStr varchar2(10); 
     


    begin 
     


       curDateStr:=to_char(curdate,'yyyy-MM-dd'); 
     


       dbms_output.put_line(curDateStr); 
     


    end; 
     


    --在过程中定义复合类型 
     


       1>数组类型 
     


       declare  
     


         type ArrayList is table of number index by binary_integer; 
     


         ua ArrayList; 
     


        begin 
     


          ua(0):=12; 
     


          ua(-1):=20; 
     


          dbms_output.put_line(ua(0)); 
     


        end; 
     


        2>定义复合类型的对象类型  使用对象的成员可以使用 对象.属性名称访问 
     


       declare  
     


         type userinfo is record( 
     


            userid number, 
     


            userName varchar2(20), 
     


            sex number 
     


         ); 
     


         jyb userinfo; 
     


         begin 
     


            jyb.userid:=1; 
     


            jyb.userName:='蒋永兵'; 
     


            jyb.sex:=0; 
     


            dbms_output.put_line(jyb.userName||'的用户id是:'||jyb.userid); 
     


         end;     
     


    三 列类型和行类型 
     


       --定义列类型 通过获取表的列类型给当前变量 
     


       declare sex_tmp tb_student.sex%type; 
     


        begin 
     


          sex_tmp:='1'; 
     


          syso(sex_tmp); 
     


        end; 
     


        --行类型 通过select into语句抓取一行 
     


       declare student_row tb_student%rowtype; 
     


        sname varchar2(20); 
     


        begin 
     


           --select into用于在过程语句中将表中的数据抓取到变量中    
     


           --这里是抓取行 
     


          select * into student_row from tb_student where sid=1; 
     


           --抓取行中的某一列到变量 
     


          select sname into sname from tb_student where sid=1; 
     


           syso(student_row.sname); 
     


           syso(sname); 
     


        end; 
     


     四 定义过程的逻辑控制语句   
     


        1>if逻辑控制语句 
     


       declare sex number:=3; 
     


        begin 
     


           if (sex=0) then 
     


              syso('男'); 
     


           elsif(sex=1) then 
     


              syso('女'); 
     


           else 
     


              syso('不男不女'); 
     


           end if; 
     


        end; 
     


        2>循环 
     


       --loop循环 相对于java的do while循环 
     


       declare num number:=1; 
     


        begin 
     


          loop  
     


             syso(num); 
     


             num:=num+1; 
     


             exit when num=11; 
     


          end loop; 
     


        end; 
     


        --while循环 相对于java的while循环 
     


       declare num number:=1; 
     


        begin 
     


           while (num<=10)loop  
     


             syso(num); 
     


             num:=num+1; 
     


          end loop; 
     


        end; 
     


        --for循环 相对于java的for循环 reverse表示反转输出 
     


       declare num number:=1; 
     


        begin 
     


           for i in  1..10 loop  
     


             syso(i); 
     


          end loop; 
     


        end; 
     


        --隐式游标方式的循环 用于循环迭代表记录 
     


       begin 
     


           for stu_tmp in (select * from tb_student) loop 
     


              syso(stu_tmp.sname); 
     


           end loop; 
     


        end; 
     


      
  • 相关阅读:
    vscode英文显示设置为中文语言
    vscode各插件使用-背景图-scss
    公众号关联小程序
    js点击遮罩空白区域关闭,点击遮罩内元素不关闭
    swiper使用-点击跳转指定页
    小程序内部引导关注公众号实现方法
    jq赋值input值为空
    sass中代码使用
    Sources”参数中指定了多次。“Sources”参数不支持重复项
    将已存在小程序项目添加云开发配置
  • 原文地址:https://www.cnblogs.com/t0404/p/10291066.html
Copyright © 2011-2022 走看看