oracle 存储过程深入学习与应用
对于存储过程已经有过一周的学习时间了,但是之学到一些皮毛,争取根据基础,熟练后能进行深入。
--1、存储过程创建存储过程的语法: CREATE [ OR REPLACE ] PROCEDURE procedure_name [ ( parameter_list ) ] {IS | AS} [ local_declarations ] BEGIN executable_statements [ EXCEPTION exception_handlers ] END [ procedure_name ]; --其中:procedure_name是过程的名称。 parameter_list是参数列表。 local_declarations是局部声明。 executable_statements是可执行语句。 exception_handlers是异常处理程序。 --示例1: 演示创建过程(参数列表中为IN参数赋予一个默认值,不能为OUT、IN OUT参数赋予默认值) create or replace procedure find_emp ( emp_no in number := 7900 ) as empname varchar2(20); begin select ename into empname from emp where empno = emp_no ; dbms_output.put_line('雇员姓名是 ' || empname); exception when no_data_found then dbms_output.put_line('雇员编号未找到'); end find_emp; --调用过程:EXECUTE procudure_name(parameters_list); --也可以在过程里面调用,直接写上procudure_name而不必写EXECUTE。 --示例2:演示创建带OUT参数的过程 create or replace procedure test ( value1 varchar2 , value2 out number ) is identity number; begin select sal into identity from emp where empno = value1 ; if identity < 2000 then value2 := 1000; else value2 := 500; end if; end; --调用带OUT参数的过程: declare value2 number; begin test('7900', value2); dbms_output.put_line(value2); end; --示例3:演示创建带IN OUT参数的过程 create or replace procedure swap ( p1 in out number , p2 in out number ) is v_temp number; begin v_temp := p1; p1 := p2; p2 := v_temp; end; --调用带IN OUT参数的过程: declare num1 number := 100; num2 number := 200; begin swap(num1, num2); dbms_output.put_line('num1= ' || num1); dbms_output.p ut_line('num2= ' || num2); end; --示例4:将过程的执行权限授予其他用户 GRANT EXECUTE ON find_emp TO scott; GRANT EXECUTE ON swap TO PUBLIC; --将find_emp过程的执行权限授予给用户scott,将执行swap过程的权限授予所有数据库用户。 --删除过程语法: DROP PROCEDURE procudure_name;