日期:2014-05-16  浏览次数:20391 次

ORACLE中的过程

可以创建包含一组SQL和PL/SQL语句的过程,过程使得业务逻辑在数据库中集中,任何能够访问数据库的程序都可以使用过程,创建过程的语法:

CREATE [OR REPLACE] PROCEDURE procedure_name
[(parameter_name [IN | OUT | IN OUT] type[, ...])]      
{IS | AS}
BEGIN
  procedure_body
END procedure_name;

?

OR REPLACE说明如果该过程已经存在,则用新的过程代替它,该选项可以用来修改一个现有过程

procedure_name指定过程名

parameter_name指定参数名,可以向一个过程传递多个参数

IN | OUT | IN OUT定义参数的模式

type定义参数的类型

procedure_body包含执行过程任务的SQL和PL/SQL语句

?

下面的例子定义一个名为update_emp2_sal的过程,该过程将雇佣的工资乘以一个倍数,雇佣empno和倍数作为参数传递给过程:

CREATE OR REPLACE PROCEDURE update_emp2_sal(
       p_empno IN emp2.empno%TYPE,
       p_factor IN NUMBER) 
AS       
       v_emp2_count INTEGER;
BEGIN
  SELECT COUNT(*)
  INTO v_emp2_count
  FROM emp2
  WHERE emp2.empno = p_empno;
  
  --如果该编号的雇佣在表中存在,则更新工资
  IF v_emp2_count = 1 THEN
    UPDATE emp2
    SET sal = sal * p_factor
    WHERE emp2.empno = p_empno;
    COMMIT;
  END IF;
EXCEPTION
  WHEN OTHERS THEN
    ROLLBACK;
END update_emp2_sal;
/  

?

调用过程可以用下面的语句:

CALL update_emp2_sal(7369, 2);
EXEC update_emp2_sal(7369, 2);

?

获取过程相关信息:

SELECT * FROM user_procedures WHERE object_name = 'UPDATE_EMP2_SAL';

?

删除过程语句:?

DROP PROCEDURE update_emp2_sal;

?


?


?