首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

ORA-14551: cannot perform a DML operation inside a query 解决方法!

2014-01-28 
我有一个函数 CREATE OR REPLACE FUNCTION BB_F_物资统计报表 ( p_报表编号 in varchar2,p_报表属性 in v

我有一个函数
CREATE OR REPLACE FUNCTION "BB_F_物资统计报表" (
p_报表编号 in varchar2,p_报表属性 in varchar2,p_器材类别 in varchar2,p_所属单位 in varchar2,
p_统计开始时间 in date,p_统计结束时间 in date,p_报表名称 in varchar2,p_统计人 in varchar2
)
return varchar2
as
d_last date;
s_bbbh varchar2(14);
begin
--新增报表
if p_报表编号='new' then
select trim(to_char(sysdate,'yyyymmddhh'))||trim(to_char(BB_SEQ_物资统计报表.Nextval,'0000')) into s_bbbh from dual;
insert into tetdmis.BB_物资统计报表主表(报表编号,报表属性,器材类别,所属单位,统计开始时间 ,统计结束时间 ,报表名称,统计日期,统计人)
values(s_bbbh,p_报表属性 ,p_器材类别 ,p_所属单位 ,p_统计开始时间 ,p_统计结束时间 ,p_报表名称 ,sysdate ,p_统计人);
else
--重新计算
s_bbbh :=p_报表编号;
delete tetdmis.bb_物资统计报表 where 报表编号=s_bbbh;
end if;
commit;
--上期帐面日期
d_last :=trunc( p_统计开始时间 - 1,'dd');

insert into tetdmis.bb_物资统计报表(报表编号,物资机编码,上期帐面数量,回收,购入,出租,报废,可用,待检,待修,待报废,在用数量,本期帐面数量)
select s_bbbh,
t_物资.物资机编码,
sum(nvl(上期帐面数, 0)) 上期帐面数,
sum(nvl(回收, 0)) 回收,
sum(nvl(购入, 0)) 购入,
sum(nvl(报废, 0)) 报废,
sum(nvl(出租, 0)) 出租,
sum(nvl(可用, 0)) 可用,
sum(nvl(待检, 0)) 待检,
sum(nvl(待修, 0)) 待修,         

热点排行