Я использую следующий скрипт:Некорректное Синтаксис Near GO, T-SQL EXEC()
DECLARE @dbName NVARCHAR(20) = 'ABC';
EXEC (N' USE ' + @dbName + '
GO
-- Create Schema
CREATE SCHEMA meta
GO
-- Create Log Table
CREATE TABLE meta.LogAudit(
[EventDate] [datetime] NOT NULL DEFAULT (getdate()),
[EventType] [nvarchar](64) NULL
)
GO
'
);
, но он бросает мне следующую ошибку.
Msg 111, Level 15, State 1, Line 5
'CREATE SCHEMA' must be the first statement in a query batch.
Msg 102, Level 15, State 1, Line 22
Incorrect syntax near 'GO'.
Почему это?
-
Edit:
Этот ответ, кажется, отвечая на мой вопрос: dynamic sql error: 'CREATE TRIGGER' must be the first statement in a query batch
Так что, кажется, что в моей ситуации я не могу запрограммировать его динамически. Весь мой код работает следующим образом:
USE DB
GO
CREATE SCHEMA SCH
GO
CREATE TABLE SCH.TABLE
GO
CREATE TRIGGER TRG
GO
Так, как SCHEMA
и TRIGGER
должен быть первым оператором запроса, он не может быть написан таким образом.
Возможного дубликата [Execute Dynamic Query с ходом в SQL] (http://stackoverflow.com/ вопросы/14473223/execute-dynamic-query-with-go-in-sql) – Tanner
Вы * можете * запрограммировать его динамически. Просто разделите строки и выполните их отдельно. –
@ Dnac попробуйте динамический sql для создания схемы из моего обновленного ответа ниже. Я уверен, что нечто подобное можно создать и для триггера. Просто проверьте, работает ли создание схемы для вас. – andrews