日期:2014-05-16 浏览次数:20413 次
可以创建包含一组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;
?
?
?