http://blog.bossma.cn/database/some-oracle-storing-process/
几个常用的Oracle存储过程
发布时间:2008年1月6日 / 分类:DataBase / 7,268 次浏览 / 评论
初学Oracle,了解了一下Oracle的存储过程,运行了几个例子,做个备忘,方便以后使用:
1、插入数据:
向一张表里插入若干条数据
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/*
创建表tb1
包含两个字段col1、col2
*/
create table tb1(
col1 char(20),
col2 char(20));
/*插入数据的存储过程*/
CREATE OR REPLACE PROCEDURE INSERTAMOUNTTEST
(
ST_NUM IN NUMBER,/*起始数值*/
ED_NUM IN NUMBER/*结束数值*/
)
IS
BEGIN
declare
i number;
begin
/*循环插入*/
FOR i IN ST_NUM..ED_NUM LOOP
INSERT INTO tb1 values(i,'test');
END LOOP;
end;
commit;
/*异常处理*/
EXCEPTION
WHEN OTHERS THEN
rollback;
END;
/*在CommondLine下执行*/
exec INSERTAMOUNTTEST(1,2000);
|
2、更新数据
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
CREATE OR REPLACE PROCEDURE UPDATEAMOUNTTEST
(
WHERE_NUM IN VARCHAR2/*SQL语句条件值*/
)
IS
BEGIN
UPDATE tb1 SET col2='test2' where col1 like WHERE_NUM||'%';
/*异常处理*/
EXCEPTION
WHEN OTHERS THEN
rollback;
END;
/*在CommondLine下执行*/
exec UPDATEAMOUNTTEST('11');
|
3、存储过程之间的调用
以一个查询更新为例子
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/*
查询更新存储过程,调用更新存储过程UPDATEAMOUNTTEST2
*/
CREATE OR REPLACE PROCEDURE SELECTUPDATETEST
(
tJStr IN CHAR
)
is
upStr CHAR(20);
begin
/*
查询出要更新的字段值
*/
select a.col2 into upStr from tb1 a where a.col1 = tJStr;
/*
调用更新存储过程
传入用于更新的两个参数
*/
UPDATEAMOUNTTEST2('11',upStr);
end SELECTUPDATETEST;
/*
更新用的存储过程,被SELECTUPDATETEST调用
*/
CREATE OR REPLACE PROCEDURE UPDATEAMOUNTTEST2
(
WHERE_NUM IN VARCHAR2,/*更新条件*/
SET_NAME IN VARCHAR2/*更新后的字段值*/
)
IS
BEGIN
UPDATE tb1 SET col2=SET_NAME where col1 like WHERE_NUM||'%';
EXCEPTION
WHEN OTHERS THEN
rollback;
END;
|