![]() |
1
4
如果确实需要为此使用动态sql,请像这样使用sp\u executesql:
|
![]() |
2
1
您不需要使用动态SQL。另外,如果您要生成动态SQL,这样做的好处之一就是您的查询不需要有这种类型的SQL
编辑
|
![]() |
3
1
其他答案提供了解决方案。这就是为什么你的解决方案不起作用。当@TestId为null时,将null连接到@Query字符串,并将null分配给@Query。若您打印@Query来代替exec,您将看到将要运行的查询。
|
![]() |
4
0
构建动态查询是不好的,m'kay…也就是说,您可以通过将null检查移到动态查询之外并在那里处理它来修复它:
|
![]() |
5
0
从您的代码中,我怀疑您想要的是通过TestId过滤注册的结果,因为它不是空的。为什么不以编程的方式而不是在SQL查询中这样做呢?沿着这些思路(我的语法可能是错误的):
另外,justinniessner是对的,如果可能的话,应该避免使用动态SQL(这可以在没有动态SQL的情况下完成)。 |
![]() |
Jack Skeletron · T-SQL三表求和 6 年前 |
![]() |
CSK · 列出sql server中存储过程中的存储过程 6 年前 |
![]() |
DRT · 从文本字段中提取多个日期 6 年前 |
![]() |
ihatemash · 确定可以合并哪些行的SQL查询 6 年前 |
![]() |
Shawn · 使用WinZip命令行的SQL Server作业 6 年前 |