sqlserver 触发器在“*”号附近有语法错误 5

触发器的功能主要是当向ICM表插入数据时自动从SEO表上获取对应的信息。代码如下:createtriggerICMrpResult_insert13onICMrpResu... 触发器的功能主要是当向ICM表插入数据时自动从SEO表上获取对应的信息。代码如下:
create trigger ICMrpResult_insert13
on ICMrpResult
after insert
as
declare
@iFOrgEntyrID int,--ICM表上SEO表外键之一
@iFPlanOrderInterID int,--ICM表的主键
@iFOrgSaleInterID int,--ICM表上SEO表的外键之一
@sFNote varchar(255),--SEO表的备注
@c int,--记录行数
@n int,
@sr nvarchar(800);--由于参数问题,需要把要运行的sql语言放到参数@sr上
set @c=(select count(FPlanOrderInterID) from ICMrpResult)
set @n=(select count(FPlanOrderInterID) from Inserted)--从inserted表上得知插入了多小行数据
while @n>0
--@iFType smallint;--是否有进行过mrp计算
--select @iFType=FType from Inserted
--if(@iFType='1')
begin
set @sr='select top 1 @iFPlanOrderInterID=FPlanOrderInterID from ICMrpResult
where FPlanOrderInterID not in ( select top '+ cast(@c-@n as char(3))+ ' FPlanOrderInterID from ICMrpResult order by FInterID)'
---------运行参数@sr里的sql语言。获取ICM表倒数第n行的主键
EXECUTE SP_EXECUTESQL @sr,N'@iFPlanOrderInterID int output',@iFPlanOrderInterID output
---------------
select @iFOrgSaleInterID=FOrgSaleInterID,@iFOrgEntyrID=FOrgEntyrID from ICMrpResult where FPlanOrderInterID=@iFPlanOrderInterID;
select @sFNote=FNote from SEOrderEntry where convert(char(20),FInterID)+convert(char(20),FEntryID)in(convert(char(20),@iFOrgSaleInterID)+convert(char(20),@iFOrgEntyrID));
update ICMrpResult
set
FHeadSelfj0548=@sFNote from ICMrpResult where FPlanOrderInterID=@iFPlanOrderInterID;
set @n=@n-1;
end
当运行的时候就提示“在“*”处发现语法错误”,然后插入数据终止
展开
 我来答
skyfukk
2014-09-01 · TA获得超过1187个赞
知道小有建树答主
回答量:966
采纳率:100%
帮助的人:638万
展开全部
--您写的触发器没有什么问题,唯一可能出现问题的地方是下面的语句,一般是脏数据造成的
select @sFNote=FNote 
    from SEOrderEntry 
        where convert(char(20),FInterID)
            +convert(char(20),FEntryID)
                in(
                convert(char(20),@iFOrgSaleInterID)
                +convert(char(20),@iFOrgEntyrID)
                ); 
                
 --一般ERP里不推荐用触发器解决
更多追问追答
追问
如果这样的话有什么方法可以实现这个功能
追答
用存储过程进行封装比较安全,并且纠错比较容易,不会出现找不到错误原因的情况
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式