Udostępnij za pomocą


Instrukcje narzędzi programu SQL Server — GO

Dotyczy do:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsEndpoint analityki SQL w Microsoft FabricMagazyn w Microsoft FabricBaza danych SQL w Microsoft Fabric

Program SQL Server udostępnia polecenia, które nie są instrukcjami Transact-SQL, ale są rozpoznawane przez narzędzia sqlcmd i osql oraz edytor kodu programu SQL Server Management Studio. Te polecenia mogą służyć do ułatwienia czytelności i wykonywania partii i skryptów.

Go sygnalizuje koniec partii instrukcji Transact-SQL do narzędzi programu SQL Server.

Transact-SQL konwencje składni

Syntax

GO [count]  

Arguments

count
Jest dodatnią liczbą całkowitą. Wsad poprzedzający go wykona określoną liczbę razy.

Remarks

GO nie jest instrukcją Transact-SQL; Jest to polecenie rozpoznawane przez narzędzia sqlcmd i osql oraz edytor sql Server Management Studio Code.

Narzędzia programu SQL Server interpretują język GO jako sygnał, że powinny wysłać bieżącą partię instrukcji Transact-SQL do wystąpienia programu SQL Server. Bieżąca partia instrukcji składa się ze wszystkich instrukcji wprowadzonych od ostatniego języka GO lub od początku sesji ad hoc lub skryptu, jeśli jest to pierwszy go.

Instrukcja Transact-SQL nie może zajmować tego samego wiersza co polecenie GO. Jednak wiersz może zawierać komentarze.

Użytkownicy muszą przestrzegać reguł dla partii. Na przykład każde wykonanie procedury składowanej po pierwszej instrukcji w partii musi zawierać słowo kluczowe EXECUTE. Zakres zmiennych lokalnych (zdefiniowanych przez użytkownika) jest ograniczony do partii i nie można się do tego odwoływać po poleceniu JĘZYKA 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  

Aplikacje programu SQL Server mogą wysyłać wiele instrukcji Transact-SQL do wystąpienia programu SQL Server na potrzeby wykonywania wsadowego. Instrukcje w partii są następnie kompilowane w jednym planie wykonywania. Programiści wykonujący instrukcje ad hoc w narzędziach programu SQL Server lub tworząc skrypty instrukcji Transact-SQL do uruchamiania za pośrednictwem narzędzi programu SQL Server, używają języka GO do sygnalizowania końca partii.

Aplikacje oparte na interfejsach API ODBC lub OLE DB otrzymują błąd składniowy, jeśli spróbują wykonać polecenie GO. Narzędzia programu SQL Server nigdy nie wysyłają polecenia GO do serwera.

Nie używaj średnika jako terminatora instrukcji po go.

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

W edytorze zapytań SQL portalu usługi Microsoft Fabric każda instrukcja SQL jest uruchamiana jako niezależna sesja. Kontekst sesji nie jest utrwalany w instrukcjach SQL. Aby uzyskać więcej informacji, zobacz Edytor zapytań SQL.

Permissions

GO to polecenie narzędzia, które nie wymaga uprawnień. Może to być wykonywane przez dowolnego użytkownika.

Examples

Poniższy przykład tworzy dwie partie. Pierwsza partia zawiera tylko instrukcję USE AdventureWorks2022 ustawiania kontekstu bazy danych. Pozostałe instrukcje używają zmiennej lokalnej. W związku z tym wszystkie deklaracje zmiennych lokalnych muszą być zgrupowane w jednej partii. Odbywa się to przez brak GO polecenia dopiero po ostatniej instrukcji, która odwołuje się do zmiennej.

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  

Poniższy przykład wykonuje instrukcje w partii dwa razy.

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