2010-06-28 67 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

相关问题