Oracle
1 存储过程与存储函数
1.1 存储过程
存储过程是命名的pl/sql程序块,封装数据业务操作,具有模块化、可重用、可维护、更安全特点;并且可以被程序调用。一般有4类型的存储过程,分别为不带参数、带输入参数、带输出参数、带输入输出参数。
1.1.1 语法
【语法】 CREATE [OR REPLACE] PROCEDURE <过程名>[(参数列表)] IS|AS [局部变量声明] BEGIN 可执行语句 [EXCEPTION 异常处理语句] END [<过程名>];
OR REPLACE:如果系统已存在该存储过程,将被替换 参数列表:参数不需要声明长度,可选 参数变量的类型:in 为默认类型,表示输入; out 表示只输出;in out 表示即输入又输出;
【调用方式】 在PL/SQL块中直接使用过程名; 在PL/SQL程序外使用 exec[ute] <过程名>[(参数列表)]; |
1.1.2 无参存储过程
-- 授予itcast创建存储过程的权限 grant create procedure to czy;
/* 使用无参存储过程,注意无参存储过程创建时不能使用() */
create or replace procedure pro_helloWorld as begin dbms_output.put_line('Hello World.'); end;
-- 方式一:调用存储过程,可加可不加() begin pro_helloWorld; end;
-- 方式二:调用存储过程,可加可不加() exec pro_helloWorld; |
1.1.3 有输入参数存储过程
/* 使用有输入参存储过程 */ createorreplaceprocedure pro_add_emp( p_empno in emp.empno%type, p_ename in varchar2, p_sal in number ) as begin --将输入参数对应的数据插入emp表 insert into emp(empno, ename,sal) values(p_empno, p_ename, p_sal); end; /
-- 调用存储过程,向emp表插入新数据 begin pro_add_emp(2001,'itcast2001',3000); pro_add_emp(2002,'itcast2002',2000); pro_add_emp(2003,'itcast2003',4000); end; |
1.1.4 有输出参数的存储过程
/* 使用有输出参存储过程,计算1到10的总和并通过参数返回 */ create or replace procedure pro_1to10_sum( p_sum out number ) as tem_sum number(4):=0; begin for i in1..10 loop tem_sum := tem_sum + i; end loop; p_sum |