我正在尝试更新表中的整数类型的列,这是我收到的错误消息:“ to data type int” 有人可以帮我吗?
这是程序代码:
@table nvarchar(20),
@nameColumnID nvarchar(15),
@id nvarchar(9),
@homeNumber int
DECLARE @sql int
IF(@homeNumber != 0)
SET @sql = 'UPDATE ' + @table + ' SET homeNumber = ' + @homeNumber + ' WHERE ' + @nameColumnID + ' = ' + @id
EXECUTE sp_executesql @sql
答案 0 :(得分:0)
仅使用“ EXECUTE(@sql)”代替“ EXECUTE sp_executesql @sql”
答案 1 :(得分:0)
在可能的值上使用参数(即不使用标识符):
DECLARE @table nvarchar(20); 宣告@nameColumnID nvarchar(15); 声明@id nvarchar(9); DECLARE @homeNumber int; 宣告@sql nvarchar(max);
IF (@homeNumber <> 0)
BEGIN
SET @sql = 'UPDATE ' + @table + ' SET homeNumber = @homeNumber WHERE ' + @nameColumnID + ' = @id';
EXEC sp_executesql @sql,
N'@homeNumber int, @id nvarchar(9)',
@homeNumber=@homeNumber, @id=@id;
END;
您还声明了@sql
为整数。可能只是一个疏忽。但是,如果将homeNumber
用作电话号码,则应使用字符串。电话号码可以以零开头。
答案 2 :(得分:0)
您必须将int id转换为字符串
这是我机器上表的工作代码。
@table nvarchar(20),
@nameColumnID nvarchar(15),
@id nvarchar(9),
@homeNumber int
DECLARE @sql nvarchar(400)
IF(@homeNumber != 0)
SET @sql = 'UPDATE ' + @table + ' SET homeNumber = ' + CONVERT(varchar(10), @homeNumber) + ' WHERE ' + @nameColumnID + ' = ' + @id
EXECUTE (@sql)