论坛首页 综合技术论坛

PL/SQL2_控制结构

浏览 1650 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-07-04  

控制结构
一、分支结构
1、if
   注意:elsif 和else If
2、case
   注意:
   case语句中的条件选择器可以省略,when后面既可以是一个具体的值,也可以是一个或多个
   条件表达式。
   case语句可以返回一个值,这是和java中的switch区别的。
二、循环结构
1、基本循环:无条件的循环
   语法:
   Loop
       循环体;
   End Loop;
   注意:循环体中不要忘记添加退出循环的语句。使用exit 关键字进行循环的退出
2、有计数的循环(For循环)
   语法:
   For 计数器 In [Reverse] 循环下限..循环上限 Loop
       循环体;
   End Loop;
   注意:计数器是一个不需要事先声明的整型变量,每次循环之后自动增1或者减1。
3、有条件的循环(while)                                                 
   语法:
   While 条件 Loop
        循环体;
   End Loop;
4、循环嵌套和标签  
                       
复合数据类型 
一、复合数据类型的概念
    内部可以再有分量的数据类型叫做复合数据类型。此种数据类型不是Oracle自动提供的。   
二、复合变量   
     和创建不同的变量形式相同。
     变量名 数据类型名;
三、复合数据类型种类
1、记录型
   记录数据类型相当于类,该类型里面的分量名相当于属性名
   记录型变量相当于类的一个实例(对象)
   语法:
   a、创建数据类型
   在decalre部分使用如下语法:
   Type 记录型名字 Is Record (分量名列表);
   其中分量名列表格式为:变量名 数据类型 [Not Null][Default][初始值]
   b、创建该类型的变量
   在declare部分使用如下语法:
   变量名 记录型名字
   c、记录型变量的引用。
    如果想引用变量中的某一个分量,可以直接写 变量名.分量名
    如果想引用整个变量,就直接写变量名
   
    当使用Select为记录型变量赋值时,要注意Select后面的列名列表一定要和into后面的记录型
    变量中的分量列表在个数和数据类型上保持一致。
    案例:
    declare
       type emp_record_type is Record
        ( v_empno emp.empno%type,v_ename emp.ename%type,v_sal emp.sal%type); --创建记录数据类型
       emp_record emp_record_type;--创建记录型变量
    begin
     select empno,ename,sal into emp_record from emp where empno = 7788;--为记录型变量赋值
     dbms_output.put_line(emp_record.v_empno || emp_record.v_ename || emp_record.v_sal);
     --打印出记录型每一个分量
     end;
     练习:使用记录型变量显示在部门20中工资最低的员工姓名及部门名称。
     Declare
            Type emp_record_type Is Record (v_ename emp.ename%Type,v_dname dept.dname%Type);
            emp_record emp_record_type;
     Begin
            Select ename,dname Into emp_record From emp ,dept
              Where emp.deptno = dept.deptno
                     And  emp.deptno = 20
                            And sal = (Select Min(sal) From emp Where deptno = 20);
            dbms_output.put_line(emp_record.v_ename || emp_record.v_dname);
      End;                                 
      记录类型的有效范围只在当前块中。
2、一种简便创建记录型变量的方式:%rowtype,使用该属性不用事先声明记录类型了,%前面允许写表名、视图名、游标名。
   declare
       emp_record emp%Rowtype;--创建记录型变量
    begin
     select * into emp_record from emp where empno = 7788;--为记录型变量赋值
     dbms_output.put_line(emp_record.empno || emp_record.ename || emp_record.sal);
     --打印出记录型每一个分量
     end;
3、PL/SQL表  
     略。

论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics