SQL Server Profiler显示我们的ERP应用程序向DB服务器发送了很多命令,如下所示:
declare @p1 int
set @p1=NULL
declare @p5 int
set @p5=16388
declare @p6 int
set @p6=8196
exec sp_cursorprepare @p1 output,NULL,N'SELECT * FROM SomeTable WHERE 0 = 1',1,@p5 output,@p6 output
select @p1, @p5, @p6
强调:
exec sp_cursorprepare
然后SELECT (...) WHERE 0 = 1
它有意义吗?这是一种伎俩吗?
答案 0 :(得分:2)
当应用程序使用&#34生成SQL语句时; WHERE 0 = 1"或" WHERE 1 = 1",它通常用作占位符,以便应用程序可以使用AND或OR动态构建WHERE子句的其余部分,而无需确定哪个条件是第一个和需要立即遵循" WHERE"。
所以是的,这对于为应用程序开发人员构建动态WHERE子句更加容易。我自己用过它。