標籤:處理常式 多個 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 EXCEPTION12 WHEN no_result THEN 13 DBMS_OUTPUT.PUT_LINE(‘你需要的資料不存在!‘);14 WHEN OTHERS THEN15 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)ISBEGIN 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;
oracle預存程序