转换失败 - nvarchar 值转换为数据类型 int



我有以下sql存储过程,但c#代码捕获异常并显示以下消息:

Conversion failed when converting the nvarchar value to data type int

SQL 存储过程

@byTestType int
AS
DECLARE @qry nvarchar(3000)
IF @byTestType = 4
BEGIN
    SET @qry = 'SELECT * FROM aTbl ORDER BY aCol'
END
ELSE
BEGIN
    SET @qry = 'SELECT * FROM aTbl WHERE aCol= '
    SET @qry = @qry +''''+CAST(@byTestType as varchar(3))+''''
END
EXEC sp_executesql @qry

aCol 数据类型为 varchar(3)

不明白问题出在哪里!

我做了一些研究并修改了你的演示

DECLARE @byTestType int = 1200
DECLARE @qry nvarchar(3000)
IF @byTestType = 4
BEGIN
    SET @qry = 'SELECT * FROM aTbl ORDER BY aCol'
END
ELSE
BEGIN
    SET @qry = 'SELECT * FROM aTbl WHERE aCol= '
    SET @qry = @qry +''''+CAST(@byTestType as varchar(3))+''''
END
print @qry

有趣的是,输出是:

从 aTbl 中选择 *,其中 aCol= '*'

请修改您的行

 SET @qry = @qry +''''+CAST(@byTestType as nvarchar)+''''

还请注意以下情况

DECLARE @byTestType int = NULL

在这种情况下,您的@qry将为空

最新更新