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、存储过程之间的调用
以一个查询更新为例子
C#
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; |