Megosztás a következőn keresztül:


SQL Server segédprogramok utasításai – GO

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsSQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Az SQL Server olyan parancsokat biztosít, amelyek nem Transact-SQL utasítások, de az sqlcmd és osql segédprogramok és az SQL Server Management Studio Code Editor felismerik. Ezek a parancsok a kötegek és szkriptek olvashatóságának és végrehajtásának megkönnyítésére használhatók.

A GO egy Transact-SQL utasítás kötegének végét jelzi az SQL Server segédprogramjainak.

Transact-SQL szintaxis konvenciók

Syntax

GO [count]  

Arguments

count
Pozitív egész szám. A GO-t megelőző köteg a megadott számú alkalommal lesz végrehajtva.

Remarks

A GO nem Transact-SQL utasítás; ez az sqlcmd és osql segédprogramok és az SQL Server Management Studio Code-szerkesztő által felismert parancs.

Az SQL Server-segédprogramok a GO-t jelként értelmezik, hogy az aktuális Transact-SQL utasításköteget az SQL Server egy példányának kell elküldeniük. Az aktuális utasításköteg az utolsó GO óta beírt összes utasításból áll, vagy az alkalmi munkamenet vagy szkript kezdete óta, ha ez az első GO.

A Transact-SQL utasítás nem foglalható el a GO-parancsokkal megegyező sorba. A sor azonban tartalmazhat megjegyzéseket.

A felhasználóknak be kell tartaniuk a kötegekre vonatkozó szabályokat. Egy tárolt eljárásnak például a köteg első utasítása utáni végrehajtásának tartalmaznia kell az EXECUTE kulcsszót. A helyi (felhasználó által definiált) változók hatóköre kötegre korlátozódik, és GO-parancs után nem hivatkozható rá.

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  

Az SQL Server-alkalmazások több Transact-SQL utasítást küldhetnek az SQL Server egy példányának kötegelt végrehajtás céljából. A kötegben lévő utasítások ezután egyetlen végrehajtási tervbe lesznek lefordítva. Az SQL Server segédprogramokban alkalmi utasításokat végrehajtó programozók, vagy Transact-SQL utasítások szkriptjeinek létrehozása az SQL Server segédprogramokon való futtatáshoz, a GO használatával jelzik a köteg végét.

Az ODBC- vagy OLE DB API-kon alapuló alkalmazások szintaxishibát kapnak, ha GO-parancsot próbálnak végrehajtani. Az SQL Server segédprogramok soha nem küldenek GO-parancsot a kiszolgálónak.

A GO után ne használjon pontosvesszőt utasítás-terminátorként.

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

A Microsoft Fabric portál SQL-lekérdezésszerkesztőjében minden SQL-utasítás független munkamenetként fut. A munkamenet-környezet nem marad meg az SQL-utasítások között. További információ: SQL-lekérdezésszerkesztő.

Permissions

A GO egy olyan segédprogramparancs, amely nem igényel engedélyeket. Bármely felhasználó végrehajthatja.

Examples

Az alábbi példa két köteget hoz létre. Az első köteg csak egy utasítást USE AdventureWorks2022 tartalmaz az adatbázis-környezet beállításához. A fennmaradó utasítások helyi változót használnak. Ezért minden helyi változódeklarációt egyetlen kötegbe kell csoportosítani. Ez úgy történik, hogy csak a változóra hivatkozó utolsó utasítás után lesz GO parancs.

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  

Az alábbi példa kétszer hajtja végre a kötegben lévő utasításokat.

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