oracle 11gPL/SQL语言基础

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;

用户自定义异常:

根据用户的实际需求规定为异常

猜你喜欢

转载自blog.csdn.net/u013129932/article/details/50097497