1
我已經包含的不一致性在T-SQL存儲過程與無效的比較檢查
--cutting the declaration of various variables
SELECT @val = id FROM dbo.example_table
WHERE [email protected] AND [email protected]
if @val = null
insert record
當這樣在存儲過程中與一個空表執行的零比較存儲的過程,這將插入記錄,但是當它作爲存儲過程之外的代碼塊執行時,它將不執行插入。還有其他SQL服務器,無論是在存儲過程的內部還是外部,永遠不會插入。
有一些解釋他爲什麼可以在某些情況下工作,但沒有在其他情況下工作?我知道執行比較的正確方法是@val IS NULL
,但我很好奇@val = null
是否記錄在任何地方以便完整。
A ['SET ANSI_NULLS OFF'(https://msdn.microsoft。 com/en-us/library/ms188048.aspx)會導致這個...(如果是這種情況,你應該刪除它並用已記錄的方式重寫以處理空值) –
你永遠不會比較null與任何東西 - 使用'is null ' – ajeh