如何在存储过程中创建多个视图?

pol*_*nts 1 sql t-sql ddl stored-procedures sql-server-2005

我想创建一个临时存储过程来创建几个视图; 所以这样的事情:

create proc #t1 as
begin
   create view v1 as select 1 as x
   go
   create view v2 as select 2 as x
end
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我在Microsoft SQL Server 2005中执行此操作时,我在第一create view行遇到语法错误.

像这样的东西有效:

create proc #t1 as
begin
   exec('create view v1 as select 1 as x')
   exec('create view v2 as select 2 as x')
end
Run Code Online (Sandbox Code Playgroud)

然而,这似乎是一种做我想做的事情的可怕方式.

那么第一次尝试出了什么问题,在存储过程中创建多个视图的最佳方法是什么?

Guf*_*ffa 5

你不能拥有go一个存储过程.它不是SQL中的命令,它是SQL管理器中批处理之间的分隔符,因此它会将过程分成两批并导致语法错误,因为两个批处理都不是完整的命令.