Seperate two procedures
Date: 12 Jun 2006 11:46:29 -0700
Message-ID: <1150137989.348958.273740_at_y43g2000cwc.googlegroups.com>
Guru,
[Quoted] I had a package I want to use to do an audit. The
package has a procedure and I have renamed the package
to a procedure and seperated few procedures. Right now
I have a procedure inside a procedure and I want
either make it as one procedure and use the same code
or seperate it to a seperate procedure. I treid few methods and it
failed. How do I do
that. I am attaching the procedure:
CREATE OR REPLACE procedure Check_For_Gabriel_Holes( in_netId number,
in_year number, in_qtr number ) is
ld_snapshotDateTime date := sysdate;
cursor lc_GabrielAiring( in_typeId number ) is
select ld_snapshotDateTime
,sell_sch_id net_id
,ss.s_week+psab.day bday
,ss.s_offset offset
,p.len len
,ss.s_week week_of
-- Start time is offset + start of day + plus partial sid
offset
,ss.s_week
+psab.day
+(nettm.broadcast_begin_time
+ss.s_offset
+ss.bgn_offset
)/86400 start_dttm
-- End time is offset + start of day + plus partial sid end
offset if present or len
,ss.s_week
+psab.day
+(nettm.broadcast_begin_time
+ss.s_offset
-- throw out any spare seconds from the pp blocks that
sometimes arise
+trunc(decode(ss.end_offset,0,p.len,ss.end_offset)/60) *
60
)/86400 end_dttm
,ss.sell_id
,so.type_id
,p.prg_id
,sog.group_title
,1 gabriel_airing_ct
,ss.bgn_offset
,ss.end_offset
from s_sch_off ss
,s_obj so
,s_obj_group sog
,ge_net_broadcast_time nettm
,ps_air_byte psab
,ge_calendar_qtrs q
,p_programs p
where ss.s_week between q.start_dt and q.end_dt
and q.year_num = in_year -- BN !!3
and q.qtr_num = in_qtr -- BN !!3
and q.cal_id = 1
and ss.sell_sch_id = in_netId
and so.type_id = in_typeId
and psab.air_byte = ss.air_byte
and ss.sell_sch_id = nettm.net_id
and ss.s_week between nettm.valid_begin_dt and
nettm.valid_end_dt
and ss.prg_id = p.prg_id
and ss.sell_id = so.sell_id
and so.s_obj_group_id = sog.s_obj_group_id
order by ss.s_week+psab.day,ss.s_offset,ss.bgn_offset;
lr_lastRow lc_GabrielAiring%rowtype;
ln_holeCount number := 0;
lb_first boolean := true;
kn_telecastType constant number := 2; kn_daypartType constant number := 4; type ltn_table is table of number index by binary_integer; ltn_sellTypeIds ltn_table;
type ltc_table is table of varchar(50) index by binary_integer; ltc_SellTypeName ltc_table;
ln_iType number; ln_pgmId number; ln_ShouldHaveSellingTitleCount number;ProgramShouldHaveSellingTitle boolean := true;
lnStartOfDay number;
lnEndOfDay number;
procedure RecordHole( ir_row lc_GabrielAiring%rowtype, in_prgId number, ir_lastRow lc_GabrielAiring%rowtype, ic_type varchar2 ) is
lc_insertText varchar2(20);
ln_firstTime number;
ln_lastTime number;
begin
if ic_type = 'H' then
lc_insertText := 'Hole ';
ln_firstTime := ir_lastRow.start_dttm - ir_row.bday;
ln_lastTime := ir_lastRow.end_dttm - ir_row.bday;
else
lc_insertText := 'Ovlp ';
ln_firstTime := ir_lastRow.start_dttm - ir_row.bday;
ln_lastTime := ir_lastRow.end_dttm - ir_row.bday;
end if;
RecordScheduleAnomoly(ir_row.bday
,ir_lastRow.start_dttm - ir_row.bday
,ir_lastRow.end_dttm - ir_row.bday
,null
,ir_lastRow.sell_id
,in_prgId
,lc_insertText
||'('
||ir_lastRow.group_title
||' ends at '
||to_char( ir_lastRow.end_dttm, 'hh24:mi' )
||')'
,' ('
||ir_row.group_title
||' starts at '
||to_char( ir_row.start_dttm, 'hh24:mi' )
||').'
);
ln_holeCount := ln_holeCount + 1;
end;
begin
dbms_output.put_line( chr(9) );
dbms_output.put_line( 'Gabriel Selling Schedule Holes' );
dbms_output.put_line( chr(9) );
ltn_SellTypeIds(1) := kn_telecastType;
ltc_SellTypeName(1) := 'Title Specific Sell Ids ("2" type)';
ltn_sellTypeIds(2) := kn_daypartType;
ltc_SellTypeName(2) := 'Daypart Sell Ids ("4" type)';
lr_lastRow.bday := to_date('1-jan-1900','dd-mon-yyyy');
- DKN has a 6AM start of broadcast day, but they don't schedule anything until 10AM or after 1PM if in_netId = 95 then lnStartOfDay := 14400; lnEndOfDay := 25200; else lnStartOfDay := 0; lnEndOfDay := 86400; end if;
<<l_types>>
for ln_iType in 1..2 loop
dbms_output.put_line( chr(9) );
dbms_output.put_line( chr(9) );
dbms_output.put_line( ltc_SellTypeName( ln_iType ) );
dbms_output.put_line( chr(9) );
-- PrintScheduleAnomolyHdg;
dbms_output.put_line( '. PrgId/ Program Title/'
);
dbms_output.put_line( 'Date TC id SID Problem
Description' );
dbms_output.put_line( '-------- ------- -------
---------------------------------------------------------' );
<<l_checkGabrielForHoles>>
for lr_GabrielAiring in
lc_GabrielAiring(ltn_sellTypeIds(ln_iType))
loop
if lr_lastRow.bday != lr_GabrielAiring.bday then
if lr_GabrielAiring.offset != lnStartOfDay then -- On day
change, should have something at start of day
RecordHole( lr_GabrielAiring, lr_GabrielAiring.prg_id,
lr_lastRow, 'H' );
end if;
if lr_lastRow.offset + lr_lastRow.len != lnEndOfDay then
-- On day change, should have something at end of previous day
RecordHole (lr_lastRow, lr_lastRow.prg_id, lr_lastRow,
'H' );
end if;
else
if lr_lastRow.end_dttm > lr_GabrielAiring.start_dttm then
RecordHole( lr_GabrielAiring,
lr_GabrielAiring.prg_id,lr_lastRow, 'O' );
elsif lr_lastRow.end_dttm < lr_GabrielAiring.start_dttm
then
-- Find all of the programs in the schedule between this
time slot
-- and the end of the last time slot
ln_ShouldHaveSellingTitleCount := 0;
for crec in (select ps.prg_id
from p_sch_off ps,p_programs p
where prg_sch_id = in_netId
and prg_sched_dt = lr_GabrielAiring.bday
and ps.prg_id = p.prg_id
--and ((lr_lastRow.end_offset > 0
-- and prg_offset >=
lr_lastRow.offset)
-- or (lr_lastRow.end_offset = 0
-- and prg_offset >
lr_lastRow.offset))
and prg_offset >= lr_lastRow.offset
and prg_offset <
lr_GabrielAiring.offset)
loop
ln_pgmId := crec.prg_id;
for rc_findProgram in (select prg_id from dci_prg_with_no_sid
where prg_id = lr_GabrielAiring.prg_Id ) loop
ProgramShouldHaveSellingTitle := false;
end loop;
if ProgramShouldHaveSellingTitle = true
then
ln_ShouldHaveSellingTitleCount :=
ln_ShouldHaveSellingTitleCount + 1;
end if;
end loop;
if ln_ShouldHaveSellingTitleCount > 0
then
RecordHole( lr_GabrielAiring, ln_pgmId, lr_lastRow,
'H' );
end if;
end if;
end if;
lr_lastRow := lr_GabrielAiring;
end loop l_checkGabrielForHoles;
end loop l_types;
dbms_output.put_line( chr(9) );
dbms_output.put_line( ln_holeCount || ' hole(s) in Gabriel schedule found.' );
end Check_For_Gabriel_Holes;
Please help or
advice.
Thanks,
Joe Received on Mon Jun 12 2006 - 20:46:29 CEST
