PLSQL基础知识点总结 (1)

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

 

1.数据类型

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

字符类型:CHAR、VARCHAR、VARCHAR2等。

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

日期类型:DATE、TIMESTAMP等。

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

布尔类型:BOOLEAN。

True、false、null。

记录类型: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 [名字];


原文地址:http://blog.csdn.net/chenhaijing/article/details/5399129

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值