示例一、根據輸入的部門編號找到這個部門的所有員工
首先建立包,定義包規範
create執行後自動生成包的主體orreplace package getemp_pkg is
function getemp_fun(p_dno dept.deptno%type) return sys_refcursor; --
返回弱型別游標
end getemp_pkg;
定義包的主體(實現體)
create呼叫包orreplace
package body getemp_pkg
asfunction getemp_fun(p_dno dept.deptno%
type)
return sys_refcursor --
返回弱型別游標
ascur_emp sys_refcursor;
begin
open cur_emp for
select
*from emp where deptno=p_dno; --
開啟游標
return cur_emp; --
返回游標
endgetemp_fun;
end getemp_pkg;
declare示例二、包中有過程和函式v_emp emp
%rowtype; --
定義變數來接收游標的內容
cur_emp sys_refcursor; --
定義游標來接收返回游標
v_dno dept.deptno%type; --
定義部門編號,轉入引數
begin
cur_emp :
= getemp_pkg.getemp_fun(&
v_dno);
loop
fetch cur_emp --
提取游標
into
v_emp;
exit
when cur_emp%notfound; --
退出條件
dbms_output.put_line(cur_emp%
rowcount||'
員工編號:
'|| v_emp.empno ||
'姓名:'||
v_emp.ename);
endloop;
close cur_emp; --
關閉游標
end;
程式包規範
create程式包主體orreplace package pack_me is
procedure emp_proc(num number
);function emp_fun(eno number) return
varchar2
;end pack_me;
create執行orreplace package body pack_me is
procedure emp_proc(num number) is
v_name
varchar2(50
);
begin
select ename into v_name from emp where empno=
num;
dbms_output.put_line(
'員工編號:
'||num||
'的姓名:'||
v_name);
endemp_proc;
function emp_fun(eno number) return
varchar2
asv_job
varchar2(50
);
begin
select job into v_job from emp where empno=
eno;
return
v_job;
--dbms_output.put_line('員工編號:'||empno||' 的職位:'||v_job);
endemp_fun;
end pack_me;
--查詢包程式包declare
v_empno emp.empno
%type:=&
empno;
v_job
varchar2(50
);begin
pack_me.emp_proc(v_empno);
v_job:
=pack_me.emp_fun(v_empno);
dbms_output.put_line(
'員工編號:
'||v_empno||
'的職位:'||
v_job);
end;
--查詢user_objects資料字典確認包規範及包體
select object_type,object_name,status from user_objects where object_type in('
package
','package body
');
--刪除包刪除包規範drop package 包名稱查詢包的內容
select
*from user_source where type=
'package
'and name=
'getemp_pkg
';
刪除包體
drop package body包名稱
刪除包規範裡會對其對應的包體一起刪除
包的重新編譯
alter包的純度級別語法:pragma restrict_references(函式名,wnds[,wnps][,rnds][,rups])package 包名稱 compile package;
--示例
alter package getemp_pkg compile package;
no純度等級說明1
wnds
函式不能悠資料庫表資料(無法使用dml更新)
2rnds
函式不能讀資料庫表(無法使用select查詢)
3wnps
函式不允許悠包中的變數內容
4rnps
函式不允許讀取包中的變數內容
PL SQL學習筆記 程式包
一 程式包的說明 create or replace package p xland ispragma serially reusable v val varchar2 32 function set val ref val varchar2 return varchar2 end p xland ...
Oracle學習筆記 6 程式包使用
程式包主體 首先執行 create or replace package mypack isprocedure employee2 proc employeeid number function employee2 function return varchar2 end 其次執行 create o...
adb 工具關閉程式包,開啟程式包,查詢程式包
1.關閉程式包 關閉的是google搜尋的包 命令是 adb shell am force stop com.android.quicksearchbox 2.開啟程式包 開啟的是google搜尋的包 命令是 adb shell am start w n com.android.quicksearc...