sql特点:
1.面向集合的操作方式.
2.语言简单.易学易用.
3.同一种语言提供多种使用方式.4.非过程性的语言.
业务逻辑:
A从他的帐户汇100元给B.
tab(account,balance)
update tab set balance=balance-100 where account='A';
update tab set balance=balance+100 where account='B';
在数据库管理系统中使用过程性语言来完成业务逻辑:
oracle PL/SQL:在sql语言中加入了流程控制语句。
sqlserver T-SQL:在sql语言中加入了流程控制语句。
一、pl/sql特性:
1.移植性好。2.完成复杂功能。3.封装性好。4.减少网络传输。
二、PL/SQL基本结构
[declare]
变量(基本、游标、异常)的声明。
begin
sql语句和流程控制语句
[exception]
异常的处理
end;
1、声明
1)数据类型:
数值型:number
字符型:char(n)定长
varchar2(n)变长
日期型:date
游标:cursor
异常:exception
2)标识符要求:
字符开头,后跟_、$、数字、#;最大长度为30位;不能为关键字。
3)常量变量定义
常量名 constant 数据类型 := 值;
变量名 变量数据类型[约束][:=值]
变量名 变量数据类型[约束][default 值];
4)定义变量数据类型方法:
变量名 表名.列名%type
变量(record)名 表名%rowtype
通过 变量(record)名.列名(定义中表的列)来使用
2.begin....end
1)sql语句:
DDL(create alter drop) (这门课中不可以用)
DML(insert delete update select)(PL/SQL中只能这种语言)
DCL(grant revoke)(这门课中不可以用)
2)赋值语句:
变量名:=值;
3)注释语句:
单行--
多行/* */
4)流程控制语句:
a.分支语句 if、 case
if(条件表达式) then 语句;
else 语句;
end if;
if(条件表达式) then 语句;
elsif(条件表达式) then 语句;
else 语句;
end if;
case(变量)
when 值1 then 语句1;
...
else 语句n;
end case;
case
when 表达式 then 语句1;
...
else 语句n;
end case;
b.循环语句 loop、while loop、for
loop
语句;
if(表达式) then
exit;
end if;
end loop;
loop
语句;
exit when(表达式);
end loop;
while(表达式)loop
语句;
end loop;
c.跳转语句 goto
eg:
3.异常 exception
1)编译时出现的异常(无法处理)
2)运行时出现的异常(本文所讲述的异常))
系统异常:oracle已经处理的异常(有异常号)
系统预定义异常:对应异常号有相应的异常名
系统非预定义异常:只有异常号,没有异常名
系统预定义异常:
no_data_found too_many_rows
dup_val_on_index zero_divide
begin
exception
when 预定义异常的名字 then
具体处理的语句
end
系统非预定义异常:
1)指导异常号
2)delare
异常名 exception;
pragma exception_init(异常变量,-异常号);
3)同预定异常处理过程
自定义异常:
declare
e exception;
begin
...
if 条件表达式 then
1// raise e;
2// raise_application_error(-异常号,异常的描述信息);
end;
exception
when e then
处理;
end;
用户自定义异常:
根据用户的实际需求规定为异常