Mar*_*ker 9 t-sql sql-server dynamic-sql
我正在尝试创建一个动态数据库创建脚本.
有很多步骤,我们经常创建这个数据库,所以脚本看起来像这样.
DECLARE @databaseName nvarchar(100) = 'DatabaseName'
EXEC('/*A lot of database creation code built off of @databaseName*/')
Run Code Online (Sandbox Code Playgroud)
除了我们在此数据库中创建的一个视图外,这一切都很好.
我理解的问题源于SQL中关于EXEC命令的三个规则
所以这里有三件我尝试过但没有成功的事情.
--Result: Error message, "'CREATE VIEW' must be the first statement in a query batch"
EXEC
('
USE [' + @databaseName + ']
CREATE VIEW
')
Run Code Online (Sandbox Code Playgroud)
有什么建议?我认为这应该是一个常见的用例,但谷歌无法帮助我.
Dav*_*haw 14
您可以通过双重嵌套动态SQL语句来执行此操作:
begin tran
declare @sql nvarchar(max) =
N'use [AdventureWorks2012];
exec (''create view Test as select * from sys.databases'')';
exec (@sql);
select * from AdventureWorks2012.sys.views
where name = 'Test'
rollback tran
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24142 次 |
| 最近记录: |