PL/SQLパッケージの基本使用
1722 ワード
簡単な例です
パッケージ内のカーソルの使用
-- ( java , )
create or replace package emp_pack
is
function fun_get_name_by_num(p_num emp.empno%type) return emp.ename%type;
procedure pro_get_name_by_num(p_num in emp.empno%type ,p_name out emp.ename%type);
end emp_pack;
--
create or replace package body emp_pack
is
--
function fun_get_name_by_num(p_num emp.empno%type)
return emp.ename%type is
v_name emp.ename%type;
begin
select ename into v_name from emp where empno=p_num;
return
v_name;
end;
--
procedure pro_get_name_by_num(p_num in emp.empno%type ,p_name out emp.ename%type)
is
begin
select ename into p_name from emp where empno=p_num;
end pro_get_name_by_num;
end emp_pack;
--
declare
p_num emp.empno%type :=7369;
p_name emp.ename%type;
begin
dbms_output.put_line(emp_pack.fun_get_name_by_num(p_num));
emp_pack.pro_get_name_by_num(p_num,p_name);
dbms_output.put_line(p_name);
end;
パッケージ内のカーソルの使用
--
create or replace package pkg_emp_deptno
is
cursor cur_emp(p_dno emp.deptno%type)
return emp%rowtype;
procedure pro_show_into(p_dno emp.deptno%type);
end pkg_emp_deptno;
create or replace package body pkg_emp_deptno
is
--cursor
cursor cur_emp(p_dno emp.deptno%type)
return emp%rowtype
is select * from emp where deptno=p_dno;
--procedure
procedure pro_show_into(p_dno emp.deptno%type)
is
begin
for rec_emp in cur_emp(p_dno) loop
dbms_output.put_line(rec_emp.ename||' '||rec_emp.sal);
end loop;
end pro_show_into;
end pkg_emp_deptno;
declare
p_num emp.deptno%type :=20;
begin
pkg_emp_deptno.pro_show_into(p_num);
end;