oracle存储过程

在 ORACLE SERVER上建立存储过程,可以被多个应用程序调用,可以向存储过程传递参数,也可以向存储过程传回参数 

创建存储过程语法 :
CREATE [OR REPLACE] PROCEDURE Procedure_name
[ (argment [ { IN | OUT | IN OUT } ] Type,
argment [ { IN | OUT | IN OUT } ] Type ]
{ IS | AS }
<类型.变量的说明>
BEGIN
<执行部分>
EXCEPTION
<可选的异常错误处理程序>
END;


例 :

 1 CREATE OR REPLACE PROCEDURE DelEmp
 2   (v_empno IN emp.empno%TYPE) 
 3 AS
 4   No_result EXCEPTION;
 5 BEGIN
 6   DELETE FROM emp WHERE empno=v_empno;
 7   IF SQL%NOTFOUND THEN
 8     RAISE no_result;
 9 END IF;
10   DBMS_OUTPUT.PUT_LINE('编码为'||v_empno||'的员工已被除名!');
11 EXCEPTION
12   WHEN no_result THEN 
13   DBMS_OUTPUT.PUT_LINE('你需要的数据不存在!');
14   WHEN OTHERS THEN
15   DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
16 END DelEmp;


调用存储过程
存储过程建立完成后,只要通过授权,用户就可以在SQLPLUS 、ORACLE开发工具或第三方开发工具中来调用运行。
ORACLE 使用EXECUTE 语句来实现对存储过程的调用:
EXEC[UTE] Procedure_name( parameter1, parameter2…)


例:

CREATE OR REPLACE PROCEDURE proc_demo
  (Dept_no NUMBER DEFAULT 10 , Sal_sum OUT NUMBER,
  Emp_count OUT NUMBER)
IS
BEGIN
  SELECT SUM(sal), COUNT(*) INTO sal_sum, emp_count 
  FROM emp WHERE deptno=dept_no;
EXCEPTION
  WHEN NO_DATA_FOUND THEN 
  DBMS_OUTPUT.PUT_LINE('你需要的数据不存在!');
  WHEN OTHERS THEN 
  DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
END proc_demo; 


调用方法:

DECLARE
  V_num NUMBER;
  V_sum NUMBER(8, 2);
BEGIN
  Proc_demo(30, v_sum, v_num);
  DBMS_OUTPUT.PUT_LINE('30号部门工资总和:'||v_sum||',人数:'||v_num);
  Proc_demo(sal_sum => v_sum, emp_count => v_num);
  DBMS_OUTPUT.PUT_LINE('10号部门工资总和:'||v_sum||',人数:'||v_num);
END;


删除过程
可以使用DROP语句删除过程:
DROP PROCEDURE proceduer_name;

 

 

 

原文地址:https://www.cnblogs.com/-maji/p/7255923.html