create trigger tri_jf_jfjl_update
on dbo.jf_jfjl
for update 
as  declare 
            @skybh1 varchar(3),
            @jfje1 money,
            @jfje2  money,
            @jklx1 varchar(10),
           @jklx2 varchar(10),
           @jfhj  varchar(10)
          
begin 
          select @skybh1=jkybh,
                     @jfje1=jfje,
                    @jklx1=jklx
             
from
deleted;
select  @jfje2=jfje,
            @jklx2=jklx
from             
inserted;
if  @jklx1='作废' or @jklx1<>@jklx2
begin 
   update  jf_fyxx
 set  
       jfhj=isnull(@jfhj,0)-isnull(@jfje1,0),
       bcjfje=@jfje2;
end
end
在检查错误的时候出现不允许从数据类型varchar类型到money隐性转换,怎么用convert函数来运行此查询啊?快笨死我了

解决方案 »

  1.   

    jfhj=CONVERT(MONEY,isnull(@jfhj,0))-isnull(@jfje1,0), ISNULL返回是和前面字段类型一样的数据
      

  2.   

    bcjfje=convert(@jfje2 as  varchar(10)) ;
      

  3.   

    select  @jfje2=cast(jfje as varchar(50)), 
                @jklx2=cast(jklx  as varchar(50))
      

  4.   

    哈哈   我知道了 是把  @jfhj  varchar(10) 改为@jfhj  money     !!!
      

  5.   


    这个cast  是类型转换吗?要放到哪个select中啊?运行还是出现convert的那个问题啊
      

  6.   

    你的命名很晕,呵呵,你看看哪些是字符,却跟MONEY型比较了,然后根据提示改就行