use packaging
 go
if exists(select name from sysobjects where name='Packag_AddNew' and type='TR')
  DROP TRIGGER Packag_AddNew
go
create trigger Packag_AddNew
  on dbo.tb_Packag
  for insert
as  
  declare @strSQL varchar(3000)
  declare @a varchar(1000)
  declare @billno varchar(50)
  declare @serno smallint
  declare @prodid varchar(50)
  declare @prodname varchar(200)
  declare @quantity money
  declare @packqt money
  select @a=dn from inserted  
  select @packqt=0
  if not exists(select billno from tb_dn where billno=@a)
  begin    
    select @billno=CONVERT(varchar(50),billno),@serno=CONVERT(smallint,serno),@prodid=prodid,@prodname=prodname,@quantity=quantity from chicomp01.dbo.comprodrec where flag=500 and billno=@a
    select @strSQL='insert tb_dn (billno,serno,prodid,prodname,quantity,packqt) values ('+@billno+','+@serno+','+@prodid+','+@prodname+','+@quantity+','+@packqt+')'
    exec(@strSQL)
  end  错误提示:
服务器: 消息 257,级别 16,状态 3,过程 Packag_AddNew,行 18
不允许从数据类型 varchar 到 money 的隐性转换。请使用 CONVERT 函数来运行此查询。
服务器: 消息 257,级别 16,状态 1,过程 Packag_AddNew,行 18
不允许从数据类型 varchar 到 money 的隐性转换。请使用 CONVERT 函数来运行此查询。
服务器: 消息 257,级别 16,状态 1,过程 Packag_AddNew,行 18
不允许从数据类型 money 到 varchar 的隐性转换。请使用 CONVERT 函数来运行此查询。请问高手,怎样解决

解决方案 »

  1.   

    提示已经很清楚了,把MONEY转为字符串后再拼接.
      

  2.   

    不允许从数据类型 varchar 到 money 的隐性转换。请使用 CONVERT 函数来运行此查询
    转换一下就好了
      

  3.   

    begin    
        select @billno=CONVERT(varchar(50),billno),@serno=CONVERT(smallint,serno),@prodid=prodid,@prodname=prodname,@quantity=quantity from chicomp01.dbo.comprodrec where flag=500 and billno=@a 
        select @strSQL='insert tb_dn (billno,serno,prodid,prodname,quantity,packqt) values ('+@billno+','+@serno+','+@prodid+','+@prodname+','+rtrim(@quantity)+','+rtrim(@packqt)+')' 
        exec(@strSQL) 
      end