oracle存储过程超详细使用手册

发布时间 : 星期四 文章oracle存储过程超详细使用手册更新完毕开始阅读

Oracle存储过程总结

1、创建存储过程

create or replace procedure test(var_name_1 in type,var_name_2 out type) as --声明变量(变量名 变量类型) begin

--存储过程的执行体 end test;

打印出输入的时间信息 E.g:

create or replace procedure test(workDate in Date) is begin

dbms_output.putline(The input date is:||to_date(workDate, yyyy-mm-dd)); end test;

2、变量赋值

变量名 := 值; E.g:

create or replace procedure test(workDate in Date) is x number(4,2); begin x := 1; end test;

3、判断语句:

if 比较式 then begin end; end if; E.g

create or replace procedure test(x in number) is

begin

if x >0 then begin x := 0 - x; end; end if; if x = 0 then begin x: = 1; end; end if; end test;

4、For 循环

For ... in ... LOOP --执行语句 end LOOP;

(1)循环遍历游标

create or replace procedure test() as Cursor cursor is select name from student; name varchar(20); begin

for name in cursor LOOP begin

dbms_output.putline(name); end; end LOOP; end test;

(2)循环遍历数组

create or replace procedure test(varArray in myPackage.TestArray) as --(输入参数varArray 是自定义的数组类型,定义方式见标题6) i number; begin

i := 1; --存储过程数组是起始位置是从1开始的,与java、C、C++等语言不同。因为在Oracle中本是没有数组的概念的,数组其实就是一张

--表(Table),每个数组元素就是表中的一个记录,所以遍历数组时就相当于从表中的第一条记录开始遍历

for i in 1..varArray.count LOOP

dbms_output.putline(The No. || i ||record in varArray is: ||varArray(i)); end LOOP; end test;

5、While 循环

while 条件语句 LOOP begin end; end LOOP; E.g

create or replace procedure test(i in number) as begin

while i < 10 LOOP begin i:= i + 1; end; end LOOP; end test;

6、数组

首先明确一个概念:Oracle中本是没有数组的概念的,数组其实就是一张表(Table),每个数组元素就是表中的一个记录。

使用数组时,用户可以使用Oracle已经定义好的数组类型,或可根据自己的需要定义数组类型。

(1)使用Oracle自带的数组类型

x array; --使用时需要需要进行初始化 e.g:

create or replace procedure test(y out array) is x array; begin

x := new array(); y := x; end test;

(2)自定义的数组类型

(自定义数据类型时,建议通过创建Package的方式实现,以便于管理) E.g (自定义使用参见标题4.2) create or replace package myPackage is -- Public type declarations type info is record( name varchar(20), y number);

type TestArray is table of info index by binary_integer; --此处声明了一个TestArray的类型数据,其实其为一张存储Info数据类型的Table而已,及TestArray 就是一张表,有两个字段,一个是

name,一个是y。需要注意的是此处使用了Index by binary_integer 编制该Table的索引项,也可以不写,直接写成:type TestArray is

table of info,如果不写的话使用数组时就需要进行初始化:varArray myPackage.TestArray; varArray := new myPackage.TestArray(); end TestArray;

联系合同范文客服:xxxxx#qq.com(#替换为@)