0
SQL Server事件探查表明,我們的ERP應用程序發送了很多命令DB服務器看起來像:sp_cursorprepare'SELECT ........ WHERE 0 = 1' - 爲了什麼?
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
這有什麼意義嗎?這是一種詭計嗎?
你的意思是WHERE 1 = 0 [OR condition1] [OR condition2] [OR condition3]。是的,這是有道理的。我必須再次查看這些查詢。謝謝。 – huhu78 2015-03-31 19:39:20
是的,這就是我的意思。開發人員不知道在運行時會生成哪些額外的OR條件,因此他/她使用WHERE 1 = 0啓動WHERE子句,告訴SQL「除非有附加條件返回true,否則不要返回任何行。 「 – 2015-03-31 19:41:45