在 C# 应用程序中,我创建了以下由 SQL 事件探查器捕获的参数化动态 sql 语句:
执行此语句不返回任何结果:
exec sp_executesql N'SELECT IDWebFormAnswer FROM WebFormAnswers WHERE IDWebform = 55 AND IDWebFormQuestion = 478 AND (ANSWER = ''@answer0'')', N'@answer0 nvarchar(2)', @answer0=N'XL'
但是,如果我简单地将下面的 @answer0 替换为 XL,我将返回 4 行。
exec sp_executesql N'SELECT IDWebFormAnswer FROM WebFormAnswers WHERE IDWebform = 55 AND IDWebFormQuestion = 478 AND (ANSWER = ''XL'')', N'@answer0 nvarchar(2)', @answer0=N'XL'
我不明白为什么会这样?我是否构建了错误的查询?
最佳答案
使用参数时,不应将其括在引号中。如果这样做,则参数名称将变为文字字符串。使用您的代码,查询搜索包含值“@Answer0”的答案,但没有找到。
exec sp_executesql N'SELECT IDWebFormAnswer FROM WebFormAnswers
WHERE IDWebform = 55 AND IDWebFormQuestion = 478 AND
(ANSWER = @answer0)', N'@answer0 nvarchar(2)', @answer0=N'XL'
关于c# - 参数化动态 sql 不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24941922/