ITPub博客

首页 > 数据库 > Oracle > 包的使用

包的使用

原创 Oracle 作者:sky850623 时间:2014-01-04 13:53:03 0 删除 编辑

/********************************
名称:
功能描述:包的使用
变量命名:
   包: pkg    例:pkg_user_info
   用户自定义类型:type_   例:type_user_info
   1.无条件循环
   loop
   --statement--
   exit when
   end loop;
   2.while循环
   while loop
   statement;
   end loop;
*********************************
create or replace package pkg_emp is
type type_emp_info is record(
  eno emp.empno%type,
  name emp.ename%type,
  ejob emp.job%type,
  emgr emp.mgr%type,
  ehiredate emp.hiredate%type,
  esal emp.sal%type,
  ecomm emp.comm%type,
  edeptno emp.deptno%type
) ;  --声明变量
procedure sp_printempinfo;
function fn_getempinfo(name in varchar2) return type_emp_info;
end pkg_emp;

--如果在创建的过程中有错误用show error查看错误

create or replace package body pkg_emp is
cursor cur_emp is select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;
 procedure sp_printempinfo is
       v_emp_info type_emp_info;   --定义变量存储一行记录
  begin
  open cur_emp;
  fetch cur_emp into v_emp_info;
  while cur_emp%found loop
          dbms_output.put(v_emp_info.eno  ||  '  |');  --没有换行
   dbms_output.put(v_emp_info.name  ||  '  |'); 
   dbms_output.put(v_emp_info.ejob  ||  '  |');
   dbms_output.put(v_emp_info.emgr ||  '  |'); 
   dbms_output.put(v_emp_info.ehiredate ||  '  |'); 
   dbms_output.put(v_emp_info.esal ||  '  |'); 
   dbms_output.put(v_emp_info.ecomm  ||  '  |'); 
   dbms_output.put_line(v_emp_info.edeptno  ||  '  |');  --换行put_line
   fetch cur_emp into v_emp_info;
  end loop;
  close cur_emp;
 end sp_printempinfo;
 function fn_getempinfo(name in varchar2) return type_emp_info  --输入名字返回一条记录变量
 is
  v_emp_info type_emp_info;
  begin
  select empno,ename,job,mgr,hiredate,sal,comm,deptno into v_emp_info from emp
  where ename=name;
  return v_emp_info;
 end fn_getempinfo;
end pkg_emp;

--调用包中的程序
begin
pkg_emp.sp_printempinfo;
end;

---调用包中的函数
declare
v_result pkg_emp.type_emp_info;
begin
 v_result:=pkg_emp.fn_getempinfo('SMITH');
 dbms_output.put_line(v_result.ejob);
end;

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26937943/viewspace-1067087/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 游标
请登录后发表评论 登录
全部评论

注册时间:2013-05-30

  • 博文量
    154
  • 访问量
    515358