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

Ada*_*ley 15 sql sql-server

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

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

Incorrect syntax near the keyword 'VIEW'.
Run Code Online (Sandbox Code Playgroud)

为什么?

笔记:

  • GO声明的存在似乎没有任何区别

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

  • 这是一个更大的查询的一部分,但正如它在这里提出的那样孤立地进行测试.

Ada*_*Dev 28

这是因为CREATE VIEW必须是批次中的第一个语句,如本MSDN参考中所述.

相反,你可以这样做:例如

.....
    BEGIN 
        EXECUTE('CREATE VIEW [dbo].[dummy] AS SELECT 1 AS Dummy')
    END
Run Code Online (Sandbox Code Playgroud)