为什么我不能在BEGIN ... END块内创建一个视图

时间:2010-06-28 15:59:50

标签: sql sql-server

此代码不起作用,返回错误:

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

Incorrect syntax near the keyword 'VIEW'.

为什么?

注意:

  • GO语句的存在 似乎没有什么区别

  • 内部语句在代码块分隔符之外正常工作。

  • 这是较大查询的一部分但是 尽可能隔离地进行测试 在这里提出。

2 个答案:

答案 0 :(得分:25)

这是因为CREATE VIEW必须是批量中的第一个语句,如this MSDN reference中所述。

相反,你可以这样做: e.g。

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

答案 1 :(得分:-2)

您可以使用三种方式创建临时视图。

1- AdaTheDev 回答。

2 - 创建一个临时表,然后在其中插入值,例如create Table #TableName (ID integer)See this Link

3-使用公用表表达式[With]。 See this Link