Sql 存储过程:更新传入列参数的Int字段
我试图在传递列参数时更新int字段。当我尝试输入varchar、float或money字段时,这会成功工作,但不会输入int。当我尝试使用int值执行此SP时,会出现此错误: 将数据类型varchar转换为int时出错 `Sql 存储过程:更新传入列参数的Int字段,sql,tsql,dynamic-sql,Sql,Tsql,Dynamic Sql,我试图在传递列参数时更新int字段。当我尝试输入varchar、float或money字段时,这会成功工作,但不会输入int。当我尝试使用int值执行此SP时,会出现此错误: 将数据类型varchar转换为int时出错 ` 一种方法是根据需要填写@dataTypes,或者将它们放入表中,然后使用if语句选择适当的查询。您将向存储过程参数传递什么?相反的情况发生在我身上,那就是我只有在尝试转换非整数值时才会出错。 CREATE PROCEDURE [dbo].[spUpdateField] @s
一种方法是根据需要填写@dataTypes,或者将它们放入表中,然后使用if语句选择适当的查询。您将向存储过程参数传递什么?相反的情况发生在我身上,那就是我只有在尝试转换非整数值时才会出错。
CREATE PROCEDURE [dbo].[spUpdateField]
@strOrderNumber nvarchar(50)
, @strField nvarchar(50)
, @strValue nvarchar(50)
AS
Declare
@sql nvarchar (1000);
set @sql = 'update tblOrder
SET ' + @strField + ' = ''' + @strValue + '''
WHERE strOrderNumber = ''' + @strOrderNumber + '''' ;
exec sp_executesql @sql;
GO
DECLARE @datatype varchar(max)
SELECT @datatype = DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'tblOrder' AND
COLUMN_NAME = @strField
if @dataType = 'int' or @datatype = 'float' Or @datatype = 'tinyInt'
BEGIN
Declare @sql nvarchar (1000);
set @sql = 'update tblOrder
SET ' + @strField + ' = ' + @strValue
WHERE strOrderNumber = ''' + @strOrderNumber + '''' ;
exec sp_executesql @sql;
END
ELSE
Declare @sql nvarchar (1000);
set @sql = 'update tblOrder
SET ' + @strField + ' = ''' + @strValue + '''
WHERE strOrderNumber = ''' + @strOrderNumber + '''' ;
exec sp_executesql @sql;
END