/********************************
名称:
功能描述:包的使用
变量命名:
包: pkg 例:pkg_user_info
用户自定义类型:type_ 例:type_user_info
1.无条件循环
loop
--statement--
exit when
end loop;
2.while循环
while
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/ ,如需转载,请注明出处,否则将追究法律责任。