- ysj5125094
- 等级:
- 性别:
- 文章: 14
- 积分: 160
- 来自: 沈阳
|
控制结构
一、分支结构
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表
略。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
返回顶楼 |
|
|