別のデータベースにビューをドロップして作成する動的SQLを作成しています。
だから私は書いた:
set @CreateViewStatement =
'
USE ['+ @DB +'];
CREATE VIEW [dbo].[MyTable]
AS
SELECT ........something
exec (@CreateViewStatement)
それは私にエラーを与えます:
「CREATE VIEW」はクエリバッチの最初のステートメントである必要があります。
USE DATABASEステートメントを削除すると正常に動作しますが、データベースは指定されていません...
この問題を解決するにはどうすればよいですか?
ネストされた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)