标签:_id ace rtm turn 特定 函数 style loop roc
储存程序 (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 employees 10 WHERE 11 department_id = p_deptno ; dbms_output.put_line ( 12 p_deptno || ‘average salary is :‘ || v_sal 13 ) ; FOR v_emp IN ( 14 SELECT 15 * 16 FROM 17 employees 18 WHERE 19 department_id = p_deptno 20 AND salary > v_sal 21 ) loop DBMS_OUTPUT.PUT_LINE ( 22 v_emp.employee_id || ‘‘ || v_emp.first_name || ‘ ‘ || v_emp.last_name 23 ) ; 24 END loop ; EXCEPTION 25 WHEN no_data_found THEN 26 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_count 11 FROM 12 employees 13 WHERE 14 department_id = p_deptno ; EXCEPTION 15 WHEN NO_data_found THEN 16 dbms_output.put_line (‘hahhaha‘) ; 17 END proc_return_deptinfo ;
3.pl/sql调用存储过程
1 SET SERVEROUTPUT ON 2 DECLARE 3 v_avgsal EMPLOYEES.SALARY % TYPE ; 4 v_count NUMBER ; 5 BEGIN 6 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
标签:_id ace rtm turn 特定 函数 style loop roc
原文地址:http://www.cnblogs.com/kamil/p/6074731.html