In SQL Server, un batch è un gruppo di una o più istruzioni T-SQL inviate contemporaneamente da un'applicazione a SQL Server per l'esecuzione.
Se riscontri un errore come questo:
Msg 111, Level 15, State 1, Line 2
'CREATE VIEW' must be the first statement in a query batch.
Probabilmente è perché stai combinando l'istruzione con altre istruzioni nello stesso batch, cosa che non è consentita nei batch.
La prima parte del messaggio di errore dipenderà dall'istruzione effettiva che stai utilizzando nel batch. Nel mio caso è CREATE VIEW
, ma potrebbe essere altrettanto facilmente CREATE PROCEDURE
, CREATE FUNCTION
, ecc. se queste sono le affermazioni che stai utilizzando.
Esempio
Ecco un esempio di codice che causerebbe questo errore:
DROP VIEW IF EXISTS vAllCustomers;
CREATE VIEW vAllCustomers AS
SELECT * FROM Customers;
Risultato:
Msg 111, Level 15, State 1, Line 3 'CREATE VIEW' must be the first statement in a query batch.
Nel mio caso, sto cercando di eseguire due istruzioni; un DROP VIEW
istruzione e un CREATE VIEW
dichiarazione.
Le regole di un batch T-SQL affermano che CREATE VIEW
l'istruzione non può essere combinata con altre istruzioni nello stesso batch.
In altre parole, CREATE VIEW
può essere l'unica istruzione nel suo batch.
Come correggere l'errore
Possiamo correggere l'errore precedente semplicemente aggiungendo un separatore batch dopo la prima istruzione.
In SQL Server, il GO
la parola chiave segnala la fine di un batch. Più specificamente, le utilità di SQL Server interpretano GO
come segnale che devono inviare il batch corrente di istruzioni T-SQL a un'istanza di SQL Server.
Quindi potremmo cambiare la precedente affermazione in questa:
DROP VIEW IF EXISTS vAllCustomers;
GO
CREATE VIEW vAllCustomers AS
SELECT * FROM Customers;
GO
Aggiunta di GO
risolve il problema separando le istruzioni in due batch separati.
Nota che GO
in realtà non fa parte di T-SQL. È un comando riconosciuto dalle utilità di SQL Server allo scopo di separare le istruzioni in batch.
Potrebbe essere possibile modificare il separatore batch, a seconda dello strumento utilizzato per connettersi a SQL Server. Ad esempio, in SSMS, puoi trovare questa opzione andando su:Strumenti> Opzioni> Esecuzione query> SQL Server e cerca un'opzione che dica qualcosa come "Specifica una parola o un carattere che può essere utilizzato per separare i batch".