我真的很困惑這個!我相信這很簡單,但真的不知道!T-SQL IF語句解釋
DECLARE @jobid INT = 100
IF (@JobID >= 0)
BEGIN
SELECT * into #tmp FROM Persons
end
ELSE
BEGIN
SELECT * into #tmp FROM Persons1
end
它給出了#tmp
表已經存在的錯誤!爲什麼它會驗證這兩個陳述!
當然,我的原始查詢是巨大的,做得更多,但這是一個示例來說明我的錯誤。
有人可以解釋一下嗎?
#tmp
表不存在,即使您嘗試刪除它或更改名稱,引擎仍然會驗證這兩個語句!
我正在使用2008 R2。
感謝 傑森
,因爲你還沒有降到' #tmp'來自上一次運行? – 2012-02-09 21:20:06
我很肯定你在'ELSE'之後不需要'BEGIN'。另外,根據MSDN ELSE需要在END之後出現嗎? http://msdn.microsoft.com/en-us/library/ms182717.aspx – 2012-02-09 21:23:09
@ p.campbell - 不,那不是它。如果您嘗試了代碼,您會注意到它是引發錯誤而不是運行時的解析器。它們之間的錯誤信息幾乎相同。解析器錯誤會給你'Msg 2714,Level 16,State 1',運行時錯誤會給你'Msg 2714,Level 16,State 6'。 – 2012-02-10 07:00:28