存储过程-1

来源:互联网 发布:淘宝联盟设置推广位 编辑:程序博客网 时间:2024/06/05 07:46

存储过程

一、基础知识
 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

0 0