sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server Error 111:"...måste vara den första satsen i en frågebatch"

I SQL Server är en batch en grupp av en eller flera T-SQL-satser som skickas samtidigt från en applikation till SQL Server för exekvering.

Om du stöter på ett fel som detta:

Msg 111, Level 15, State 1, Line 2
'CREATE VIEW' must be the first statement in a query batch.

Det beror förmodligen på att du kombinerar uttalandet med andra satser i samma sats, vilket inte är tillåtet i satser.

Den första delen av felmeddelandet beror på det faktiska uttalandet som du använder i din batch. I mitt fall är det CREATE VIEW , men det kan lika gärna vara CREATE PROCEDURE , CREATE FUNCTION , etc om det är de påståenden du använder.

Exempel

Här är ett exempel på kod som skulle orsaka detta fel:

DROP VIEW IF EXISTS vAllCustomers;

CREATE VIEW vAllCustomers AS
SELECT * FROM Customers;

Resultat:

Msg 111, Level 15, State 1, Line 3
'CREATE VIEW' must be the first statement in a query batch.

I mitt fall försöker jag köra två uttalanden; en DROP VIEW och en CREATE VIEW uttalande.

Reglerna för en T-SQL-batch säger att CREATE VIEW sats kan inte kombineras med andra satser i samma batch.

Med andra ord, CREATE VIEW kan vara det enda påståendet i sin batch.

Hur du åtgärdar felet

Vi kan fixa ovanstående fel genom att helt enkelt lägga till en batchseparator efter det första uttalandet.

I SQL Server, GO nyckelord signalerar slutet på en batch. Mer specifikt tolkar SQL Server-verktyg GO som en signal om att de ska skicka den aktuella batchen av T-SQL-satser till en instans av SQL Server.

Så vi kunde ändra det tidigare uttalandet till detta:

DROP VIEW IF EXISTS vAllCustomers;
GO
CREATE VIEW vAllCustomers AS
SELECT * FROM Customers;
GO

Lägger till GO löser problemet genom att dela upp uttalanden i två separata grupper.

Observera att GO är faktiskt inte en del av T-SQL. Det är ett kommando som känns igen av SQL Server-verktyg i syfte att separera satser i batcher.

Du kanske kan ändra batchseparatorn, beroende på vilket verktyg du använder för att ansluta till SQL Server. Till exempel, i SSMS, kan du hitta det här alternativet genom att gå till:Verktyg> Alternativ> Frågekörning> SQL-server och leta efter ett alternativ som säger något i stil med "Ange ett ord eller tecken som kan användas för att separera grupper".


  1. Vad exakt gör citattecken runt tabellnamnet?

  2. ORA-01031:otillräckliga privilegier vid val av vy

  3. Read Committed är ett måste för Postgres-kompatibla distribuerade SQL-databaser

  4. På effekten av helsida skriver