执行以下语句:
exec addass_proc('A0101','光大新支75290188000089156','开户银行','75290188000089156','现金流量项目',null);
/*
(corpcode in varchar2, ctaccountname in varchar2,
assbdname1 in varchar2, assvalue1 in varchar2,
assbdname2 in varchar2, assvalue2 in varchar2)
*/
执行完提示:
*
ERROR 位于第 1 行:
ORA-06550: 第 1 行, 第 7 列:
PLS-00905: 对象 SYS.ADDASS_PROC 无效
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
DOC>DOC>DOC>DOC>
是那里的错误哦,请大家多多指教!
exec addass_proc('A0101','光大新支75290188000089156','开户银行','75290188000089156','现金流量项目',null);
/*
(corpcode in varchar2, ctaccountname in varchar2,
assbdname1 in varchar2, assvalue1 in varchar2,
assbdname2 in varchar2, assvalue2 in varchar2)
*/
执行完提示:
*
ERROR 位于第 1 行:
ORA-06550: 第 1 行, 第 7 列:
PLS-00905: 对象 SYS.ADDASS_PROC 无效
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
DOC>DOC>DOC>DOC>
是那里的错误哦,请大家多多指教!
CREATE OR REPLACE PROCEDURE addass_proc
(corpcode in varchar2, ctaccountname in varchar2,
assbdname1 in varchar2, assvalue1 in varchar2,
assbdname2 in varchar2, assvalue2 in varchar2)
IS
pk_assbd1 CHAR(20);
pk_assbd2 CHAR(20);
fid CHAR(20);
pkglorgbook CHAR(20);
pk_ctaccount CHAR(20);
upd_stmt VARCHAR2(100) := 'update gl_accountlink set pk_ass =: 1 where pk_contrastaccount =: 2 and years = ''2008''';BEGIN
select pk_bdinfo into pk_assbd1 from bd_bdinfo where bdname = assbdname1;
select pk_bdinfo into pk_assbd2 from bd_bdinfo where bdname = assbdname2;
if assvalue2 is not null
then
select distinct freevalueid into fid from gl_freevalue where (checktype = pk_assbd1 and valuename = assvalue1) or (checktype = pk_assbd2 and valuename = assvalue2) group by freevalueid having count(pk_freevalue) = 2;
end if;
if assvalue2 is null
then
select freevalueid into fid from gl_freevalue fvouter where freevalueid in (select distinct freevalueid from gl_freevalue where checktype = pk_assbd1 and valuename = assvalue1) group by fvouter.freevalueid having count(fvouter.pk_freevalue) = 1;
end if;
select pk_glorgbook into pkglorgbook from bd_glorgbook where bd_glorgbook.PK_GLORG in (select pk_glorg from bd_glorg where glorgcode = corpcode);
select pk_contrastaccount into pk_ctaccount from gl_contrastaccount ca where ca.pk_corp = pkglorgbook and ca.contrastaccountname = ctaccountname; EXECUTE IMMEDIATE upd_stmt using fid,pk_ctaccount;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
NULL;
END addass_proc;/