一. PL/SQL块
1.语句格式:
declare 变量赋值声明
begin
正常语句块(可镶嵌begin 语句块 end;)
exception when 异常名 then 异常处理(可忽略)
when others then 不满足以上异常时的处理
end;
2.dbms_output.put_line( ); --输出语句;
3.如果使用查询语句的值时,必须进行赋值:
select 字段值 into 变量,from 表名 where 条件;
4. 变量名数据类型 :=初始值; --声明变量
5. 变量名constant 数据类型 :=初始值; --声明常量
6.变量名 数据类型 default --默认值
7. var 变量名数据类型 :=初始值;
--全局变量,在当前操作窗口有效,一般用于测试,用 :变量名,调用全局变量;
8.print 全局变量名; --查看当前变量的值
9. := --赋值; .. --范围取值,如:1..5,从1到5
1)PL/SQL 支持:SQL 数据操纵命令、游标控制命令、事务控制命令(commit,rollback)、SQL 函数、运算符和伪列。
2)编译→执行→储存编译好的SQL块;
3)set serveroutput on :设置环境变量为打开状态,从而使pl/sql程序能够在SQL操作台中输出结果 。 --以上为注释
二. 数据类型:
1、标量数据类型 :数字型,字符型, 日期型和布尔型
2、属性数据类型 :%type:复制某个字段的类型;
%rowtype:复制表的全部类型;
3、自定义数据类型:type 变量名 record (可有多个数据类型);
4、binary_integer:介于-231 和 231 之间的整数。
三. 条件控制和循环控制:
注:if嵌套if时,外层if条件满足时执行内层if,如果外层if不满足时,执行elsif或者else;
注:exit when 条件; --当满足条件时,跳出循环
1. if 条件 then 语句块 elsif 条件 then 语句块 else 语句块end if;
2. case 字段 when 条件 then 语句块 else 语句块 end case;
3. loop 循环体 end loop ; --无限循环
4. where 条件loop 循环体end loop; --循环
5. for 变量名 in 循环次数loop 循环体end loop;
注:in 从1..10,in reverse 从10..1;
6. goto 标签名1; <<定义标签名1>> 语句;--跳转到标签1
注:可以跟 goto 标签2 <<标签2>> null;相结合使用
7.execute immedlate:=’sql语句’ using 向sql语句传递参数。
--动态执行语句
returning 列 into :名;
returning into 列参数名 -- 用于接参数;
、注:动态执行语句主要针对DDL语句的,DDL的语句不能直接在sql语句块来使用,参数值的变量可以做成输入框。
四. 异常:
1. 预定义异常
Ø no_data_found --用于数据空指针异常时使用。
Ø dup_val_no_index --用于向唯一索引列中输入了重复值时使用。
Ø invalid_number --用于处理字符串转换为数字时使用。
Ø too_many_rows --用于处理查询中返回多于 1 条记录。
Ø zero_divide --用于处理用 0 作为除数时的数据。
Ø cursor_already_open --用于处理打开一个已经打开的游标。
Ø invalid_cursor --用于处理进行非法游标操作时使用。
2.自定义异常
declare中声明异常:异常名 exception; →begin语句块中引发:raise 异常名;→exception中捕捉处理异常:when 异常名 then 异常处理内容。
3. 引发应用程序异常(引发系统异常)
ralse_application_error(异常码,异常内容信息)
--用于自定义异常处理报错的框框。
异常码:-20000至-20999;
4. 异常码绑定
pragma exception_init(异常名,异常码);--在声明中进行绑定
注:在程序中进行引发应用程序异常时,必须进行异常码的绑定。