Sdílet prostřednictvím


Příkazy nástrojů SQL Serveru – GO

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsKoncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

SQL Server poskytuje příkazy, které nejsou Transact-SQL příkazy, ale jsou rozpoznány nástroji sqlcmd a osql nástroje a editorem kódu aplikace SQL Server Management Studio. Tyto příkazy lze použít k usnadnění čitelnosti a spouštění dávek a skriptů.

Go signalizuje konec dávky příkazů Transact-SQL nástrojům SQL Serveru.

Transact-SQL konvence syntaxe

Syntax

GO [count]  

Arguments

count
Je kladné celé číslo. Dávka předcházející go provede zadaný počet opakování.

Remarks

GO není příkaz Transact-SQL; jedná se o příkaz rozpoznaný nástroji sqlcmd a osql a editorem sql Server Management Studio Code.

Nástroje SQL Serveru interpretují go jako signál, že by měly odesílat aktuální dávku příkazů Transact-SQL do instance SQL Serveru. Aktuální dávka příkazů se skládá ze všech příkazů zadaných od posledního go nebo od začátku ad hoc relace nebo skriptu, pokud se jedná o první go.

Příkaz Transact-SQL nemůže zabírat stejný řádek jako příkaz GO. Řádek ale může obsahovat komentáře.

Uživatelé musí dodržovat pravidla pro dávky. Například jakékoli spuštění uložené procedury za prvním příkazem v dávce musí obsahovat klíčové slovo EXECUTE. Rozsah místních (uživatelem definovaných) proměnných je omezen na dávku a nelze na to odkazovat po příkazu GO.

USE AdventureWorks2022;  
GO  
DECLARE @MyMsg VARCHAR(50)  
SELECT @MyMsg = 'Hello, World.'  
GO -- @MyMsg is not valid after this GO ends the batch.  
  
-- Yields an error because @MyMsg not declared in this batch.  
PRINT @MyMsg  
GO  
  
SELECT @@VERSION;  
-- Yields an error: Must be EXEC sp_who if not first statement in   
-- batch.  
sp_who  
GO  

Aplikace SQL Serveru můžou odesílat více příkazů Transact-SQL instanci SQL Serveru za účelem provedení jako dávky. Příkazy v dávce se pak zkompilují do jednoho plánu provádění. Programátoři, kteří spouští ad hoc příkazy v nástrojích SQL Serveru nebo vytvářejí skripty příkazů Transact-SQL, které se mají spouštět pomocí nástrojů SQL Serveru, pomocí jazyka GO signalizují konec dávky.

Aplikace založené na rozhraníCH API ODBC nebo OLE DB obdrží chybu syntaxe, pokud se pokusí spustit příkaz GO. Nástroje SQL Serveru nikdy neodesílají na server příkaz GO.

Nepoužívejte středník jako ukončovací znak příkazu po go.

-- Yields an error because ; is not permitted after GO  
SELECT @@VERSION;  
GO;  

V editoru dotazů SQL portálu Microsoft Fabric se každý příkaz SQL spustí jako nezávislá relace. Kontext relace se neuchovává napříč příkazy SQL. Další informace najdete v editoru dotazů SQL.

Permissions

GO je příkaz nástroje, který nevyžaduje žádná oprávnění. Může ho spustit libovolný uživatel.

Examples

Následující příklad vytvoří dvě dávky. První dávka obsahuje pouze USE AdventureWorks2022 příkaz pro nastavení kontextu databáze. Zbývající příkazy používají místní proměnnou. Proto musí být všechny deklarace místních proměnných seskupeny do jedné dávky. To se provádí tak, že nemáte GO příkaz až po posledním příkazu, který odkazuje na proměnnou.

USE AdventureWorks2022;  
GO  
DECLARE @NmbrPeople INT  
SELECT @NmbrPeople = COUNT(*)  
FROM Person.Person;  
PRINT 'The number of people as of ' +  
      CAST(GETDATE() AS CHAR(20)) + ' is ' +  
      CAST(@NmbrPeople AS CHAR(10));  
GO  

Následující příklad spustí příkazy v dávce dvakrát.

SELECT DB_NAME();  
SELECT USER_NAME();  
GO 2