问题还没解决?

yanfeishen79 2004-11-26 08:51:55
create trigger a
after insert on bponderation
declare
num number;
begin
select count(*) into num
from bponmonthtotaldata
where bponmonthtotaldata.fbreedid=:new.fbreedid;
if num>0 then
insert into bponmonthtotaldata (fcarcount,fbreedid) values('1',:new.fbreedid);
END monthreport;

提示in 或 out参数丢失是怎么回事,事不事逐行触发那边新值,旧值要写什么东西呀!
...全文
80 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zealot_zk 2004-11-30
  • 打赏
  • 举报
回复
老兄,:new只有在触发器中可以使用,你如果把它用到过程中当然会报错了,我的意思是先确保逻辑正确,然后调整触发器。如果你最后决定不使用触发器,那就不要用:new变量,自己穿一个变量好了
yanfeishen79 2004-11-26
  • 打赏
  • 举报
回复

declare
num number;
fbreedid char(5);
begin
fbreedid:=new_fbreedid;
select count(*) into num
from bponmonthtotaldata where bponmonthtotaldata.fbreedid=fbreedid;
END;
不行上面编译也事有点问题!
出错
Line # = 5 Column # = 12 Error Text = PLS-00201: identifier 'NEW_FBREEDID' must be declared
Line # = 5 Column # = 2 Error Text = PL/SQL
但可以保存
原来的都不可以应用
yanfeishen79 2004-11-26
  • 打赏
  • 举报
回复
declare
num number;
fbreedid char(5);
begin
fbreedid:=new_fbreedid;
select count(*) into num
from bponmonthtotaldata where bponmonthtotaldata.fbreedid=fbreedid;
END;
这样编译可以通过。
但是
declare
num number;
begin
select count(*) into num
from bponmonthtotaldata
where bponmonthtotaldata.fbreedid=:new.fbreedid;
if num>0 then
insert into bponmonthtotaldata (fcarcount,fbreedid) values('1',:new.fbreedid);
end if;
END monthreport;

就回出错!到底怎么回事!
yown 2004-11-26
  • 打赏
  • 举报
回复
create trigger a
after insert on bponderation
----------declare 去掉这行试试
num number;
begin
select count(*) into num
from bponmonthtotaldata
where bponmonthtotaldata.fbreedid=:new.fbreedid;
if num>0 then
insert into bponmonthtotaldata (fcarcount,fbreedid) values('1',:new.fbreedid);
END monthreport;
zealot_zk 2004-11-26
  • 打赏
  • 举报
回复
declare
num number;
fbreedid char(5);
begin
fbreedid:=new_fbreedid;
select count(*) into num
from bponmonthtotaldata where bponmonthtotaldata.fbreedid=fbreedid;
END;

这个如果编译通过就是没问题,只是在你定义 Trigger 时把 declare 去掉就可以了
yanfeishen79 2004-11-26
  • 打赏
  • 举报
回复
我的思路是这样的

我往bponderation表里每插入一条记录就去bponmonthtotaldata表里去查询
如果bponmonthtotaldata表有字段fbreedid和bponderation表里fbreedid有相同记录就累计
否则添加一条记录
baojianjun 2004-11-26
  • 打赏
  • 举报
回复
內部錯誤
懷疑和你bponmonthtotaldata表的結構有關
yanfeishen79 2004-11-26
  • 打赏
  • 举报
回复
是不是 :new 在哪里要定义呀!
yanfeishen79 2004-11-26
  • 打赏
  • 举报
回复
触发器主体
declare
num number;
begin
select count(*) into num
from bponmonthtotaldata where bponmonthtotaldata.fbreedid=:new.fbreedid;

END monthreport;
这样写也是错的也是提示
提示 Failed to commit: 索引中丢失 IN 或 OUT 参数:: 1
dlmaomao 2004-11-26
  • 打赏
  • 举报
回复
insert 后 要提交数据 commit;

yanfeishen79 2004-11-26
  • 打赏
  • 举报
回复
提示 Failed to commit: 索引中丢失 IN 或 OUT 参数:: 1
yanfeishen79 2004-11-26
  • 打赏
  • 举报
回复
不行呀!还是提示in 或 out参数丢失
baojianjun 2004-11-26
  • 打赏
  • 举报
回复
create or replace trigger monthreport
after insert on bponderation
for each row
declare
num number;
begin
select count(*) into num
from bponmonthtotaldata
where bponmonthtotaldata.fbreedid=:new.fbreedid;
if num>0 then
insert into bponmonthtotaldata (fcarcount,fbreedid) values('1',:new.fbreedid);
end if;
END monthreport;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧