标签:处理程序 多个 out 建立 div 处理 server 通过 others
在 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;
标签:处理程序 多个 out 建立 div 处理 server 通过 others
原文地址:http://www.cnblogs.com/-maji/p/7255923.html