存储过程
一、基础知识
1.商业规则和业务逻辑可以通过程序存储在Oracle 中,这个程序就是存储过程,就是一段存储在
数据库中执行某种功能的程序看,其中包含一条或多条SQL语句。
2.要创建一个过程对象必须有CREATE PROCEDURE 系统权限。执行procedure的时候,可能需要excute 权限。
3.如果单独赋予权限,如下例所示:
grant execute on MY_PROCEDURE to Jelly
调用一个存储过程的例子:
execute MY_PROCEDURE( 'ONE PARAMETER');
4.存储过程是命令, 而函数是表达式的一部分。
二、基本语法
1.存储过程
1.1创建存储过程
CREATE OR REPLACE PROCEDURE 存储过程名字(
参数1 IN NUMBER,
参数2 IN NUMBER,
...
)
AS
变量1 INTEGER :=0;
变量2 DATE;
...
BEGIN
... --存储体
END 存储过程名字
1.2查看存储过程
select * from user_source where name = 'P_FIND_ADDRESS_BY_STUID' order by line;
user_source是当前用户的试图。
1.3查看存储过程的错误
SHOW ERRORS PROCEDURE PROCEDURE_NAME;
2.SELECT INTO STATEMENT
BEGIN
SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;
EXCEPTION
WHEN NO_DATA_FOUND THEN
...;
END;
将select 查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条
记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)。
3.IF 判断
IF V_TEST=1 THEN
BEGIN
do something
END;
END IF;
4.WHILE 循环
WHILE V_TEST=1 LOOP
BEGIN
do something
END;
END LOOP;
5.用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;
6.执行存储过程
declare
--必要的变量声明,视你的过程而定
begin
execute yourprocudure(parameter1,parameter2,...);
end