oracle procedure存储过程
Posted 阿玛尼迪迪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle procedure存储过程相关的知识,希望对你有一定的参考价值。
1、基本结构
CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS/AS 变量1 INTEGER :=0; 变量2 DATE; BEGIN . . . END 存储过程名字
2、SELECT INTO STATEMENT
将select查询的结果存入到变量中,可以同时将多个列(字段)存储到多个变量中,必须有一条记录,否则抛出异常(如果没有记录,抛出NO_DATA_FOUND)
例子:
BEGIN SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx; EXCEPTION WHEN NO_DATA_FOUND THEN ROLLBACK; RAISE; END;
3、IF判断
IF 条件1 THEN Do Someting ELSIF 条件2 THEN Do Someting ELSIF 条件3 THEN Do Someting ELSE Do Someting END IF;
4、while循环
WHILE V_TEST=1 LOOP BEGIN XXXX END; END LOOP;
5、变量赋值
V_TEST := 123;
6、用for in使用cursor(游标)
... IS CURSOR cur IS SELECT * FROM xxx; BEGIN FOR cur_result in cur LOOP BEGIN V_SUM :=cur_result.列名1+cur_result.列名2 END; END LOOP; END;
7、用pl/sql developer debug
连接数据库后建立一个Test Window
在窗口输入调用SP的代码,F9开始Debug,CTRL+N单步调试
注意事项:
1)存储过程参数不带取值范围,in表示传入,out表示输出;
2)变量可带取值范围,后面接分号;
3)在判断语句前最好先用count(*)函数判断是否存在该条操作记录
4)用select...into...给变量赋值
5)在代码中抛出异常用RAISE;通常的用法:
EXCEPTION WHEN OTHERS THEN ROLLBACK; RAISE; /* 异常分很多类,如NO_DATA_FOUND。OTHERS处本应该写异常名称,如果不想把异常分得那么细,可以笼统一点用OTHERS来捕获,即所有异常均用OTHERS来捕获。 WHEN OTHERS THEN 表示是其它异常。 RAISE表示抛出异常,让User可以看到。 */
6)AS/IS的区别
在试图(VIEW)中只能用AS不能用IS
在游标(CURSOR)中只能用IS不能用AS
7)输出变量赋值有两种,一种是直接:=,还有一种就是SELECT INTO
8)显示调试信息
a.存储过程中在必要的位置添加
DBMS_OUTPUT.put_line(‘HI‘);
b.打开DBMS_OUTPUT
show serveroutput; set serveroutput on;
9)删除PROCEDURE
DROP PROCEDURE procedure_name;
以上是关于oracle procedure存储过程的主要内容,如果未能解决你的问题,请参考以下文章