【问题标题】:Conversion failed - nvarchar value to data type int转换失败 - nvarchar 值到数据类型 int
【发布时间】:2013-11-06 10:33:28
【问题描述】:

我有以下 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)

不明白是什么问题!

【问题讨论】:

    标签: c# sql stored-procedures sqlexception


    【解决方案1】:

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

    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
    

    有趣的是输出是:

    SELECT * FROM aTbl WHERE aCol= '*'

    请修改你的行

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

    请注意以下情况

    DECLARE @byTestType int = NULL
    

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

    【讨论】:

      猜你喜欢
      • 2019-07-03
      • 1970-01-01
      • 2020-04-17
      • 2011-08-29
      • 2015-06-20
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多