1
對於list1,選擇'ok'將會運行,即使select 1/0生成一個錯誤。對於列表2,選擇'ok'將不會運行,因爲更新失敗。這兩個列表都會生成級別爲16的錯誤,但爲什麼會有這種差異?批處理sql服務器錯誤
--1
select 1/0
select 'ok'
--2
create table #t (a int)
insert into #t values(1)
update #t set b = 99
select 'ok'
也沒有編譯錯誤。這兩個列表在運行代碼時都會產生錯誤。但答覆中的鏈接似乎很好。我在讀它。乾杯。 – thotwielder
@thotwielder - 錯誤**是**編譯時錯誤。通過創建臨時表,然後嘗試爲語句更新'#t set b = 99'生成一個估計執行計劃,可以知道這一點。我想你錯過了我寫的關於**延期**編譯的內容。 –
是的,我想知道爲什麼SQL Server將在列表1中的錯誤後繼續。現在看起來有道理。謝謝。 – thotwielder