2012-06-21 65 views
1

我試圖更新SQL Server 2008中視圖,當我運行下面的腳本,我得到了下面的錯誤。更新SQL Server 2008中查看

IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'oas_AppVend') 

錯誤:

Msg 102, Level 15, State 1, Line 2 
Incorrect syntax near ')'. 

如果我運行sript像下面(沒有,如果沒有括號),結果顯示我的「VIEW」

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'oas_AppVend' 

結果:

TABLE_NAME 
oas_AppVend 

有什麼建議嗎?

+0

你能後整個SQL腳本? – EkoostikMartin

+0

需要更多的信息,像以前一樣/ IF語句後... –

回答

2

該錯誤僅僅是因爲你寫這劇本是不夠的。在if後,SQL引擎仍然需要知道該怎麼做。

IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'oas_AppVend') 
BEGIN 
    /* VALID SQL STATEMENT MUST EXIST HERE */ 
END 

注:連碼,直到你把一個有效的SQL語句到那裏我已經注意到塊的上方會返回一個錯誤。如果你對其他方面有期望的結果,它會看起來像這樣,但是,直到你真正完成它,這不是一個有效的陳述。

IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS 
WHERE TABLE_NAME = 'oas_AppVend') 
BEGIN 
    /* VALID SQL STATEMENT MUST EXIST HERE */ 
END 
ELSE 
BEGIN 
    /* DO SOMETHING ELSE */ 
END 
+0

我能創造這個作爲一個過程,以便用戶可以運行它,否則我就當程序員需要去在每次運行呢?最後一個問題,如果視圖在基表中的記錄改變時自動更新?再次感謝。 肯 –

+0

是,以上提供的代碼示例可以在存儲過程中使用。您可以將任何其他有效的SQL語句放在已標識的塊中,只要運行proc的用戶擁有權限,就可以正常工作。爲了您的第二Q是的,一個視圖只是一個存儲select語句...所以無論是在表視圖是基於會是什麼反映在它運行的視圖隨時隨地。 – RThomas