无法使用存储过程中的参数从整数类型更新列

时间:2018-10-15 11:00:31

标签: c# sql

我正在尝试更新表中的整数类型的列,这是我收到的错误消息:“ 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

3 个答案:

答案 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)