Kin*_*han 16 sql-server-2005 sql-server dynamic-sql
我正在编写一个动态 sql 以在不同的数据库中删除和创建视图。
所以我写道:
set @CreateViewStatement =
'
USE ['+ @DB +'];
CREATE VIEW [dbo].[MyTable]
AS
SELECT ........something
exec (@CreateViewStatement)
Run Code Online (Sandbox Code Playgroud)
它给了我错误:
'CREATE VIEW' 必须是查询批处理中的第一条语句。
如果我删除 USE DATABASE 语句,它可以正常工作,但是不再指定数据库....
我怎么解决这个问题?
Mar*_*ith 25
您可以使用嵌套EXEC调用。由USE持久化更改的数据库上下文到子批次。
DECLARE @DB SYSNAME
SET @DB = 'tempdb'
DECLARE @CreateViewStatement NVARCHAR(MAX)
SET @CreateViewStatement = '
USE '+ QUOTENAME(@DB) +';
EXEC(''
CREATE VIEW [dbo].[MyTable] AS
SELECT 1 AS [Foo]
'')
'
EXEC (@CreateViewStatement)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15124 次 |
| 最近记录: |