1 块结构
SQL> declare
2 v_name number :=0;
3 begin
4 v_name :=10/v_name;
5 dbms_output.put_line(v_name);
6 exception
7 when others then
8 dbms_output.put_line('error');
9 end;
10 /
error
2 块的分类
PL/SQL的语句块分为匿名块和命名块。
匿名块:动态构造,只执行一次。
命名块:自定义函数、过程、包、触发器。
3 要想用dbms_output.put_line();在屏幕进行输出,需要用:set serveroutput on
4 变量类型
binary_integer:整数,主要用来计数
number:数字类型
char:定长字符串
varchar2:变长字符串
date:日期
long:长字符串,最长32KB
boolean:布尔类型,可以取true、false、null.PL/SQL中默认null,建议给初值
5 dbms_output.put_line()不能打印boolean类型的值
6 注释
行注释:--
多行注释:/* */
7 %type属性
SQL> declare
2 v_empno number;
3 v_ename emp.ename%type;
4 v_job v_ename%type;
5 begin
6 dbms_output.put_line('ok');
7 end;
8 /
ok
8 复合变量类型table 相当于数组
必须先声明类型,再用类型声明变量
SQL> declare
2 type type_table_emp_empno is table of
emp.empno%type index by binary_integer;
3 v_empnos type_table_emp_empno;
4 begin
5 v_empnos(0) :=7369;
6 v_empnos(2) :=7839;
7 v_empnos(-1) :=7332;
8 dbms_output.put_line(v_empnos(0)||v_empnos(2)||v_empnos(-1));
9 end;
10 /
736978397332
9 复杂变量类型record 相当于类
方式一:使用显示方式定义
SQL> declare
2 type type_record_dept is record
3 (no dept.deptno%type,
4 name dept.dname%type,
5 loca dept.loc%type
6 );
7 v_temp type_record_dept;
8 begin
9 v_temp.no := 50;
10 v_temp.name := 'sales';
11 v_temp.loca := 'China';
12 dbms_output.put_line(v_temp.no||v_temp.name);
13 end;
14 /
50sales
方式二:使用%rowtype属性定义记录
SQL> declare
2 v_temp dept%rowtype;
3 begin
4 v_temp.deptno :=50;
5 v_temp.dname :='sales';
6 v_temp.loc :='China';
7 dbms_output.put_line(v_temp.deptno||v_temp.dname);
8 end;
9 /
50sales