2010-06-28 108 views
10

此代碼不起作用內,返回錯誤:爲什麼我不能創建一個視圖BEGIN ... END塊

BEGIN 
    CREATE VIEW [dbo].[dummy] AS SELECT 1 AS Dummy 
END 
GO` 

Incorrect syntax near the keyword 'VIEW'. 

爲什麼?

注:

  • GO語句 的存在,似乎沒有什麼區別

  • 內聲明的工作代碼塊分隔符的罰款之外。

  • 這是一個較大的查詢的一部分,但是 單獨測試,就像它在此處顯示的 一樣。

+0

是否有一個原因,你試圖把它放在BEGIN ... END塊內? – 2010-06-28 16:04:35

+0

其if條款的內容 – 2010-06-28 16:29:15

+0

您希望在什麼情況下有條件地創建視圖?這聽起來像你正在使用視圖不正確。 – Gabe 2010-06-28 17:19:37

回答

20

這是因爲如this MSDN reference中所述,CREATE VIEW必須是批處理中的第一條語句。

取而代之,您可以: 例如

..... 
    BEGIN 
     EXECUTE('CREATE VIEW [dbo].[dummy] AS SELECT 1 AS Dummy') 
    END 
+1

我看到了那篇文章,但認爲'batch'指的是BEGIN和END之間的代碼 - 所以一批代碼是GO關鍵字的唯一分隔符? – 2010-06-28 16:10:33

-1

您可以使用三種方式創建臨時視圖。

1- AdaTheDev答案。

2-創建臨時表,然後在其中插入值,例如create Table #TableName (ID integer)See this Link

3-使用通用表達式[With]。 See this Link

相關問題