oracle 修改pkg命令,oracle简单PKG(包)编写
PL/SQL Developer
1.Command Window
View nt_affix; 瀏覽nt_affix
Edit ob_affix; 編輯ob_affix
Drop type nt_affix?2??/; 刪除nt_affix
Create type nt_affix as table of ob_affix; 創(chuàng)建個nt_affix繼承ob_affix
2.OB/NT/PKG都存于這個表名為USER_OBJECTS中
3.OB:
右鍵點擊右邊Types新建OB
create or replace type OB_SALECHECKON as object
(
-- Author??: zyp
-- Created : 2012/4/20 12:25:17
-- Purpose : OB_SALECHECKON
-- Attributes
agentID? ?? ???VARCHAR2(32), -- N??被考勤ID
agentName? ?? ?VARCHAR2(64), -- N 被考勤名字
checkName? ?? ?VARCHAR2(64), -- N 考勤人
agentCode? ?? ?VARCHAR2(32), -- N 被考勤人編號
agentLevel? ???VARCHAR2(32), -- N 被考勤人層級
checkItem? ?? ?VARCHAR2(64), -- Y 被考勤項目
checkStatus? ? VARCHAR2(32), -- Y 考勤狀態(tài)
checkStartTime DATE, -- Y 考勤開始時間
checkEndTime? ?DATE, -- Y 考勤結(jié)束時間
onTime? ?? ?? ?INT, -- Y 準(zhǔn)時(次)
beLate? ?? ?? ?INT, -- Y 遲到
leave? ?? ?? ? INT, -- Y 請假
attendance? ???VARCHAR2(64), --被考勤人出勤率
checkWork? ?? ?INT, --被考勤人被考勤次數(shù)
noCheckWork? ? INT, --被考勤人未被考勤
-- Member functions and procedures
CONSTRUCTOR FUNCTION OB_SALECHECKON RETURN SELF AS RESULT
)
------------------------------------------------------------------
CREATE OR REPLACE TYPE BODY OB_SALECHECKON IS
CONSTRUCTOR FUNCTION OB_SALECHECKON RETURN SELF AS RESULT IS
BEGIN
RETURN;
END;
END;
4.NT:
點擊SQL Window直接運行
CREATE OR REPLACE TYPE nt_salecheckon AS TABLE OF ob_salecheckon
5.PKG:
右鍵點擊右邊Packages新建pkg
create or replace package PKG_SALECHECKON is
-- Author??: zyp
-- Created : 2012/4/20 14:39:24
-- Purpose : 當(dāng)前插入考勤明細
function SALECHECKON(MAINID? ?? ?in varchar2,
CHECKSTATUS in varchar2,
AGENTLEVEL??in varchar2) return nt_SALECHECKON;
end PKG_SALECHECKON;
---------------------------------------------------------------------------------------------------------------------------
create or replace package body PKG_SALECHECKON is
function SALECHECKON(MAINID? ?? ?in varchar2, --in傳入的參數(shù),out傳出的參數(shù)
CHECKSTATUS in varchar2,
AGENTLEVEL??in varchar2) return nt_SALECHECKON is
I? ?? ?? ?? ?? ? smallint := 1; --遍歷數(shù)聲明
P_NT_SALECHECKON NT_SALECHECKON := NEW nt_salecheckon(); --實例化NT
begin
for C in (select it.checkedagentcode as agentCode,
it.checkedname? ?? ?as agentName,
it.agenglevel? ?? ? as agentLevel,
ma.startdatetime? ? as checkStartTime,
ma.enddatetime? ?? ?as checkEndTime,
it.checkres? ?? ?? ?as checkStatus
from SALECHECKONMAIN ma, SALECHECKONITEM it
where ma.salecheckonmainid = it.salecheckonmainid
and ma.salecheckonmainid = MAINID
and checkres = CHECKSTATUS
and it.agenglevel = AGENTLEVEL) loop
P_NT_SALECHECKON.EXTEND; --P_NT_SALECHECKON擴展
P_NT_SALECHECKON(I) := new OB_SALECHECKON(); --實例化OB
P_NT_SALECHECKON(I).agentCode := C.AGENTCODE; --獲取對應(yīng)的值
P_NT_SALECHECKON(I).agentName := C.AGENTNAME;
P_NT_SALECHECKON(I).agentLevel := C.AGENTLEVEL;
P_NT_SALECHECKON(I).checkStartTime := C.CHECKSTARTTIME;
P_NT_SALECHECKON(I).checkEndTime := C.CHECKENDTIME;
P_NT_SALECHECKON(I).checkStatus := C.CHECKSTATUS;
I := I + 1;
end loop;
RETURN P_NT_SALECHECKON;
end;
end PKG_SALECHECKON;
6.執(zhí)行PKG:
SELECT * FROM table(PKG_SALECHECKON.SALECHECKON('LEC0000000099821','CHECKSTATUS_2','AM'))
總結(jié)
以上是生活随笔為你收集整理的oracle 修改pkg命令,oracle简单PKG(包)编写的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 度量空间(metric space)
- 下一篇: 四位大小写字母和数字随机验证码