我有以下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将为空