过程是执行某些操作的子程序,它是执行特定任务的模块.从根本上讲,过程就是命名的PL/SQL程序块,它可以被赋予参数,存储在数据库中,然后由一个应用程序或其他PL/SQL程序调用.而子程序是已命名的PL/SQL块,它们存储在数据中,可以为它们指定参数,可以从任何数据库客户端和应用程序中调用它们.命名的PL/SQL程序包括存储过程和函数,程序包是存储过程和函数的集合. 调用程序是通过参数向被调用的过程传递值的.参数传递的模式有3种:in(输入),out(输出)和in out(输入输出). OK,下面一起来看实例. --带输入参数 create or replace procedure pro_test(eno in number) as type t_ref is ref cursor; t t_ref; rec emp%rowtype; begin open t for select * from emp where deptno=eno; loop fetch t into rec; exit when t%notfound; dbms_output.put_line(rec.ename); end loop; close t; end pro_test; --调用 declare enum number; begin enum:=&请输入编号; pro_test(enum); end;
--带输出参数 create or replace procedure pro_test(eno in number,e_name out varchar2) as begin select ename into e_name from emp where empno=eno; end pro_test; --调用 declare enum number; e_name varchar2(20); begin enum:=&请输入编号; pro_test(enum,e_name); dbms_output.put_line(e_name); end;
--带输入输出参数 create or replace procedure pro_test(test1 in out number,test2 in out number) as v_test number; begin v_test:=test1; test1:=test2; test2:=v_test; end pro_test; --调用 declare v1 number; v2 number; begin v1:=&请输入第一个参数; v2:=&请输入第二个参数; pro_test(v1,v2); dbms_output.put_line(v1||v2); end;
过程一般用来处理复杂的逻辑程序,而函数则适合用于返回一个值. 函数与过程相似,也是数据库中存储的已命名PL/SQL程序块.函数的主要特性是必须返回一个值.创建函数时通过return子句指定函数返回值的数据类型. OK,看看创建函数的实例.
--函数 create or replace function f_test(e_num number) return varchar2 as e_name varchar2(20); begin select ename into e_name from emp where empno=e_num; return e_name; end; --调用 declare e_num number; e_name varchar2(20); begin e_num:=&请输入编号; e_name:=f_test(e_num); dbms_output.put_line(e_name); end;
OK,完成.
原文:http://hujing1229.blog.ccidnet.com/blog-htm-do-showone-uid-60604-type-blog-itemid-186300.html
|