日期:2014-05-18  浏览次数:20609 次

一存储过程错误
有一存储过程如下:
CREATE procedure mod_sjsr1
@TableName varchar(30),
@id int,
@ch varchar(7),
@yu1 numeric(3, 0)
as
begin
exec('update ['+ @TableName + '] set ch='''+@ch+''',yu1='''+@yu1+''' where Id='''+@id+'''')
end
GO
查询分析器调用:
declare @id int,@ch varchar(7),@yu1 numeric(3, 0),@TableName varchar(30) set @id='1' set @ch='G0A-116' set @yu1='66' set @TableName='F2201252' exec mod_sjsr1 @id,@ch,@yu1,@TableName
出错信息:
将数据类型 varchar 转换为 int 时出错。

yu1='66'如何书写

请各位大侠不吝指教

------解决方案--------------------
SQL code
declare @id int,@ch varchar(7),@yu1 numeric(3, 0),@TableName varchar(30) 
 set @id=1 set @ch='G0A-116' set @yu1=66
set @TableName='F2201252' exec mod_sjsr1 @TableName,@id,@ch,@yu1

------解决方案--------------------
SQL code
exec('update ['+ @TableName + '] set ch='''+@ch+''',yu1='''+@yu1+''' where Id='+Convert(varchar(32),@id)+'')

------解决方案--------------------
VB code
sql='exec @TableName='"+trim(edit1.text)+"',@id="+trim(edit2.text)+",@ch='"+ytim(edit3.text)+"',@yu1="+trim(edit4.text)+"'