您的位置:首页 > 数据库 > Oracle

oracle 11gPL/SQL语言基础

2015-11-29 17:11 603 查看
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;

用户自定义异常:

根据用户的实际需求规定为异常
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息