Oracle 存储过程总结
、创建存储过程
声明变量变量名 变量类型
存储过程的执行体
打印出输入的时间信息
!!
"#$$ !
、变量赋值
变量名 %值
:
!!
&'
(
(&%
)、判断语句
*比较式 #*
&
((((((((*&+,#
(((((((((
((((((((&%,&
((((((((
((((*
((((*&%,#
(((((((
((((((((&%
((((
((((*
'、-循环
-.//0
执行语句
.//0
循环遍历游标
1*
#,
*.//0
((
.//0
循环遍历数组
(20 "2
输入参数 2是自定义的数组类型,定义方式见标题 3
%(存储过程数组是起始位置是从 开始的,与 4、1、155等语言
不同。因为在 / 中本是没有数组的概念的,数组其实就是一张
表"每个数组元素就是表中的一个记录,所以遍历数组时就相当于从表
中的第一条记录开始遍历
*2.//0(((((
"#6$$$$2$$
2(((
(.//0
7、8#循环
#条件语句 .//0
.//0
#9,.//0
((((
(%5
.//0
(
3、数组
首先明确一个概念:/ 中本是没有数组的概念的,数组其实就是一张表
"每个数组元素就是表中的一个记录。
使用数组时,用户可以使用 / 已经定义好的数组类型,或可根据自己的
需要定义数组类型。
使用 / 自带的数组类型
&使用时需要需要进行初始化
(&((
(
&%
%&
自定义的数组类型 自定义数据类型时,建议通过创建 0 的方式实
现,以便于管理
自定义使用参见标题 ' 0
(0(*(((
#,(((
("2**&(此处声明
了一个 "2 的类型数据,其实其为一张存储 :* 数据类型的 " 而
已,及 "2就是一张表,有两个字段,一个是
,一个是 。需要注意的是此处使用了 :&编制
该 " 的索引项,也可以不写,直接写成:"2
**,如果不写的话使用数组时就需要进行初始化:2
0 "22%0 "2
"2
;游标的使用 / 中 1 是非常有用的,用于遍历临时表中的查询结果。
其相关方法和属性也很多,现仅就常用的用法做一二介绍:
1 型游标不能用于参数传递
((
1*#((1
的使用方式 (1
*#(1 的使用
方式
可使用 -&.//0.//0来实现对 1 的遍历
<=<>-1?></> 型游标,该游标是 / 以预先定义的游标,可作出
参数进行传递
1<=<>-1?></>
<=<>-1?></>#,
/06-/>*#
<=<>-1?></> 只能通过 /06 方法来打开和赋值
LOOP
(*#(((<=<>-1?></> 只能通过 *# 来打开
和遍历 &#@6/"-/?6!(((((((((((((<=<>-1?></> 中可
使用三个状态属性: @6/"-/?6!未找到记录
信息@-/?6!找到记录信息(((((((((((((((((((((((((((((((((((((((
@>/81/?6"然后当前游标所指向的行位置
(
.//0
1%
下面写一个简单的例子来对以上所说的存储过程的用法做一个应用:
现假设存在两张表,一张是学生成绩表,字段为:
:#
一张是学生课外成绩表#字段为:
通过存储过程自动计算出每位学生的总成绩和平均成绩,同时,如果学生在课
外课程中获得的评价为 2,就在总成绩上加 , 分。
1<=<>-1?></>
20 2
#
:#),
0 :*
%
2调用名为 的存储过程获
取学生课外评分信息
/061*:#
*#%
LOOP
*#1:#&
#1@6/"-/?6!
%#5555
*2.//0(
(%2((((
*:%:#((
((((((
(*%A2A#(((((
(((((((((((
(%5,(((
(((&使用 跳出 * 循环
(((((
*((
((
*
.//0
99++(%B7