这是什么数据库的语言??
我只熟悉sql,但同事发给我了一些代码不是sql的,我不知道是db2还是oracle还是mysql的,懂得人给个答复,不需要告诉我意思,告诉我是什么语言就可以了,谢谢!
create or replace package G11ii is
procedure startproc;
procedure startproc(ptCnt varchar2);
--G03各项资产减值损失准备情况表
procedure GetG11ii
(
ptBegDate date, --期初日期
ptEndDate date, --期末日期
ptBbq varchar2
);
end G11ii;
/
create or replace package body G11ii is
procedure startproc
is
begin
startproc( '5 ');
end startproc;
procedure startproc(ptCnt varchar2)
is
tStartDate date ;
tEndDate date ;
sBbq varchar2(8);
begin
--季报
pubrptproc.GetRptDate(ptCnt,tStartDate,tEndDate,sBbq);
GetG11ii(tStartDate,tEndDate,sBbq);
end startproc;
procedure GetG11ii
(
ptBegDate date, --期初日期
ptEndDate date, --期末日期
ptBbq varchar2
)
is
begin
delete from a_rpt_g11_ii
where bbq=ptbbq
and startdate=ptBegDate
and enddate =ptEndDate;
--贷款
insert into a_rpt_g11_ii
select sysdate,ptbbq,ptBegDate,ptEndDate,
a.ccy_ccy_cde, --币别
c.toinst, --机构
decode(a.loan_grd,
'01 ', 'C1 ',
'02 ', 'D1 ',
'03 ', 'F1 ',
'04 ', 'G1 ',
'05 ', 'H1 ',
'00 ') , --五级分类级别
sum(nvl(a.os_prcp,0)) --当前余额
FROM o_ln_loan a ,s_ln_bch_dept b,a_rpt_add_ctrl c
WHERE a.sts= 'ACTV ' --还未结清
AND a.bhdt_bch_cde = b.bch_cde
AND b.extn_bch_cde = c.frominst
AND c.addidx =1
AND c.addind = '01 '
AND a.int_start_dt <= ptEndDate
AND a.his_begin_date <= ptEndDate
AND a.his_end_date > ptEndDate
GROUP BY a.ccy_ccy_cde,a.loan_grd,c.toinst;
--资产
insert into a_rpt_g11_ii
select sysdate,ptBbq,ptBegDate ,ptEndDate,trim(c.swccy),trim(a.brccode),b.idxno,
sum(decode(a.BALCTRLDIR, 'D ',-1, 'C ',1,1)*(a.CURRCRBAL-a.CURRDBBAL)*b.addind)
from o_cb_glssubdyn a ,a_rpt_gl_para b ,s_cb_pubcurrencyinfo c
where trim(a.SUBCTRLCODE)=b.item
and b.grpflag = 'N '
and trim(b.tabind) = 'G11II '
and a.ccy= c.ccy
and a.trandate = ptenddate
and a.his_begin_date <= ptenddate
and a.his_end_date > ptenddate
group by c.swccy ,a.brccode,b.idxno;
--债券
insert into a_rpt_g11_ii
select sysdate,ptBbq,ptBegDate ,ptEndDate,
c.ccy,e.toinst,a.idxno,
---1*sum(TDBOOKVALUE )
-1*sum(
case when c.invtype = 'T ' then 0 else 1 end *c.tdbookvalue
+
case when c.invtype = 'T ' and c.tdmarketvalue =0 then 1 else 0 end *c.tdbookvalue
+
case when c.invtype = 'T ' and c.tdmarketvalue <> 0 then 1 else 0 end *c.tdmarketvalue
)
from a_rpt_opics_para a,o_il_secm b,o_il_tpos c,o_il_cust d,a_rpt_add_ctrl e,
a_rpt_opics_para_add f,a_rpt_opics_para_add g,a_rpt_opics_para_add h
where trim(b.secid) = trim(c.secid)
and b.mdate > ptEndDate
and trim(b.issuer) =trim(d.cno)
and trim(d.acctngtype)= trim(a.para)
and trim(a.paratype) = 'ACTY '
and trim(a.tabind) = 'G11II '
and trim(b.product) = trim(f.para)
and trim(f.paratype) = 'PROD '
and trim(f.tabind) = 'G11II '
and trim(c.cost) =trim(g.para)
and trim(g.paratype) = 'COST '
and trim(g.tabind) = 'G11II '
and trim(c.invtype) =trim(h.para)
and trim(h.paratype) = 'INVTYPE '
and trim(h.tabind) = 'G11II '
and trim(c.br)= e.frominst
and e.addidx =3
and e.addind = '01 '
and b.his_begin_date <= ptEndDate
and b.his_end_date > ptEndDate
and c.his_begin_date <= ptEndDate
and c.his_end_date > ptEndDate
and d.his_begin_date <= ptEndDate
and d.his_end_date > ptEndDate
group by a.idxno,c.ccy,e.toinst;
--折算
insert into a_rpt_g11_ii
select sysdate,ptBbq,ptBegDate ,ptEndDate, '998 ',inst_no,idxno,sum(TO_RMB_RATE (ccycde,ptenddate)*bal)
from a_rpt_g11_ii
where bbq=ptbbq
and startdate=ptBegDate
and enddate =ptEndDate
and ccycde <> 'CNY '
group by inst_no,idxno
;
insert into a_rpt_g11_ii
select sysdate,ptBbq,ptBegDate ,ptEndDate, '999 ',inst_no,idxno,sum(TO_RMB_RATE (ccycde,ptenddate)*bal)
from a_rpt_g11_ii
where bbq=ptbbq
and startdate=ptBegDate
and enddate =ptEndDate
group by inst_no,idxno
;
end GetG11ii;
end G11ii;
/
[解决办法]
过程与函数的比较
相同点:
通过设置OUT参数,过程和函数都可以返回一个以上的值。
过程和函数都可以具有声明段、可执行段和异常处理段。
过程和函数都可以接受缺省值。
都可以使用位置或名称对应法调用过程和函数。
过程和函数都可以接受参数NOCOPY(仅Oracle8i及更高版本支持)。
区别:
如果返回值在一个以上时,用过程为好。
如果只有一个返回值,使用函数就可以满足要求。
函数还可以从SQL语句中调用。
