各位大哥大姐
看看这段存储过程有什么问题CREATE PROCEDURE LB_XL
(
@i_tabname varchar(30), --表名
@i_bhzid varchar(8),
@i_mj varchar(30) output --面积
)
AS set @sql2= 'update AA set '+@i_mj+'=
(select sum(aa) as area from '+@i_tabname+' where (bb='+@c_lb+') and (cc='+@i_bhzid+'))
where (bb='+@c_lb+') and (cc='+@i_bhzid+')'
exec(@sql2)其中@i_tabname 是表名变量
@i_mj 是要更新的字段名(能做变量不),每次执行时传入的字段都不同该字段在数据库中的类型是float,
看看这段存储过程有什么问题CREATE PROCEDURE LB_XL
(
@i_tabname varchar(30), --表名
@i_bhzid varchar(8),
@i_mj varchar(30) output --面积
)
AS set @sql2= 'update AA set '+@i_mj+'=
(select sum(aa) as area from '+@i_tabname+' where (bb='+@c_lb+') and (cc='+@i_bhzid+'))
where (bb='+@c_lb+') and (cc='+@i_bhzid+')'
exec(@sql2)其中@i_tabname 是表名变量
@i_mj 是要更新的字段名(能做变量不),每次执行时传入的字段都不同该字段在数据库中的类型是float,
bb和cc是什么类型?
还有bb,cc的类型跟@c_lb和@i_bhzidCAST值的类型是不是一致。??
没有任何的错误提示信息,就是没有运行结果,不知道为啥?
' where (bb='+@c_lb+') and 应该改成
' where (bb='''+@c_lb+''') and
exec sp_executesql @sql2,N'@b float output',@i_mj1 output
set @sql3= 'update AA set '+@i_mj+'='+cast(@i_mj1 as varchar(30))+' where (bb='+@c_lb+') and (cc='+@i_bhzid+')'
exec(@sql3)我改成上面的这样了
@i_mj1 float(8)
在调试过程中 @i_mj1中有数据证明set @sql3=...之前是对的,现在就是没有把数据update进去
不知道为啥?
把sql语句先弄出来看看。
update AA set @i_mj=cast(@i_mj1 as varchar(20)) where (bb=@c_lb) and (cc=@i_bhzid)
没有结果