標籤:_id ace rtm turn 特定 函數 style loop roc
1.預存程序定義
儲存程式 (Stored Procedure),又可稱預儲程式或者預存程序,是一種在資料庫中儲存複雜程式,
以便外部程式調用的一種資料庫物件,它可以視為資料庫中的一種函數或子程式。--維基百科
儲存子程式是指被命名的PL/SQL 塊,以編譯的形式儲存在資料庫伺服器中,可以在應用程式中進行調用,是PL/SQL程式模組化的一種體現。Pl/SQL中的儲存子程式包括預存程序和(儲存)函數兩種。通常預存程序用於執行特定的操作,不需要傳回值;而函數則用於返回特定的資料。在調用時,預存程序可以作為一個獨立的運算式被調用,而甘肅只能作為運算式的一個組成部分被調用。
1.編寫預存程序無參數
1 CREATE 2 OR REPLACE PROCEDURE proc_show_emp ( 3 p_deptno EMPLOYEES.DEPARTMENT_ID % TYPE 4 ) AS v_sal EMPLOYEES.SALARY % TYPE ; 5 BEGIN 6 SELECT 7 AVG (salary) INTO v_sal 8 FROM 9 employees10 WHERE11 department_id = p_deptno ; dbms_output.put_line (12 p_deptno || ‘average salary is :‘ || v_sal13 ) ; FOR v_emp IN (14 SELECT15 *16 FROM17 employees18 WHERE19 department_id = p_deptno20 AND salary > v_sal21 ) loop DBMS_OUTPUT.PUT_LINE (22 v_emp.employee_id || ‘‘ || v_emp.first_name || ‘ ‘ || v_emp.last_name23 ) ;24 END loop ; EXCEPTION25 WHEN no_data_found THEN26 DBMS_OUTPUT.PUT_LINE (‘ehhhee‘) ;27 END proc_show_emp ;
2.編寫預存程序*(有參數)
1 CREATE 2 OR REPLACE PROCEDURE proc_return_deptinfo ( 3 p_deptno EMPLOYEES.DEPARTMENT_ID % TYPE, 4 p_avgsal out employees.salary % TYPE, 5 p_count out NUMBER 6 ) AS 7 BEGIN 8 SELECT 9 AVG (salary) ,count (*) INTO p_avgsal,10 p_count11 FROM12 employees13 WHERE14 department_id = p_deptno ; EXCEPTION15 WHEN NO_data_found THEN16 dbms_output.put_line (‘hahhaha‘) ;17 END proc_return_deptinfo ;
3.pl/sql調用預存程序
1 SET SERVEROUTPUT ON2 DECLARE 3 v_avgsal EMPLOYEES.SALARY % TYPE ; 4 v_count NUMBER ;5 BEGIN6 proc_show_emp (20) ; 7 PROC_RETURN_DEPTINFO (10, v_avgsal, v_count) ; 8 dbms_output.put_line (v_avgsal || ‘ ‘ || v_count) ;9 END ;
環境oracle11R2 預設HR
oracle預存程序