PLSQL基础知识点总结

Pl/sql

分为匿名块和命名块(函数、存储过程、包、触发器等)。

 

1.数据类型

数字类型:BINARY_INTEGER(二进制存储)、NUMBER(十进制)等。

字符类型:CHARVARCHARVARCHAR2等。

存储时,变长与定长,比较时,是否会自动缩减空格(也叫做填充比较和非填充比较)。

日期类型:DATETIMESTAMP等。

DATE不包含秒的小数部分,TIMESTAMP包含。

布尔类型:BOOLEAN

Truefalsenull

记录类型:RECORD

集合类型:TABLE

等等其他类型。

 

 

2.控制结构

if语句

If 条件 Then 执行语句;

Elsif 条件 then 执行语句;

Else 执行语句 ;

End if;

 

 

case语句

Case 变量

When 1 then 执行语句;

When 2 then 执行语句;

。。。

End case;

 

或者是:

 

Case

When 条件1  then 执行语句;

When 条件2  then 执行语句;

....

End case;                           

 

corejava中的switch,虽然没有break语句,但是当满足一个when的条件而执行其后的操作后,直接结束case语句块。

 

 

3.循环结构

 

①简单循环

 

Loop

...

Exit when 条件;

End loop;

 

 

 

 

while循环

While 条件

Loop

....

End loop;

 

 

for循环(普通for循环)

For  变量  in [reverse] 下界..上界

loop

....

End loop;

 

 

4.记录类型、集合类型的定义

 

记录类型record和集合类型table

表名persons

 

id

name

age

1

Mimi

16

2

Nini

19

3

Coco

18

 

记录类型即为表中所放的记录的类型,集合类型可以看成放有n条记录的一张表。这里person是记录类型,而persons这张表是集合类型。

 

不能理解的可以从corejava编程中进行联想:

记录类型就可看成是一个没有方法只有属性的自定义的类。

 

 

 

定义记录类型:

Type record_type is record{

——————————————————

id number(6) default 100;

Name varchar2(20):= null;

——————————————————

};

 

 

而集合类型,顾名思义,将其看成是装有n个基本类型变量或者是引用类型record_type的实例集合。

 

定义集合类型:

Type  table_name  is table of element_type

Index by binary_integer;

 

 

4.游标

 

可当成  一个带有指针的临时性的表,而fetch出来的是以记录为单位的。联想corejava,可以把游标当成迭代器。

 

所以不要以为定义游标的时候select出来的仅有一个字段(varchar2类的),fetch出来的类型就是该字段类型的,事实上fetch出来的是一个记录、包含了select出来字段的一条记录类型。

 

①定义游标

Cursor  名字   is   select语句;

②打开游标

Open 名字;

③检索游标

Fetch 名字 into 变量;

④关闭游标

Close 名字;

 

5.异常

 

Declare

声明异常(自定义异常、非预定义异常)

Begin

(执行体。条件判断后,执行语句抛出自定义异常,同try

Exception

 

When判断异常(相当于corejava中的catch)

End;

 

 

PL/SQL中的异常,三类:

预定义异常、非预定义异常和用户自定义异常。

 

非预定义异常:当pl/sql块执行出现错误时,报错一个错误号,为了捕捉该错误,将错误号与异常关联,即成非预定义异常。

 

 

异常名  exception;

Pragma exception_init(异常名,错误号);

 

 

 

6.存储过程和函数

存储过程:

Create [ or replace ] Procedure 名(参数列表)

As|is

声明部分

Begin

。。。。

[exception] End [];

 

 

函数:

Create [ or replace ] function 名(参数列表)

Return 类型

As|is

声明部分

Begin

。。。。

[exception] End [];

 

 

参数列表中参数的声明:

参数名       参数模式         参数类型

 Id        in | out | in out    number

 

默认时,为in,参数可为变量或者常量。

另外两种,必须为变量。

 

存储过程和函数的区别主要在返回值上。存储过程并非是没有返回,可以通过参数返回返回值的,自身不具有返回,即没有显示的返回。而函数除了参数列表的参数有返回能力以外,还有一个显式的返回值,即自身返回值。

 

 

7.

包分为包规范和包体。包即是将相关的pl/sql元素组织在一起,打包。

 

包体的实现一定要先定义包规范。

包可以只有规范,而没有包体。

 

包规范:

Create or replace package 名字

Is|as

...(元素声明)

如:Procedure 名字(参数列表);

End [名字]

 

包体:

Create or replace package body名字

Is|as

...(元素)

End [名字]

你可能感兴趣的:(Date,exception,table,Integer,存储,联想)