Bagikan melalui


Pernyataan Utilitas SQL Server - GO

Berlaku untuk: Titik akhir analitik SQL ServerAzure SQL Database Azure SQL Managed Instance Azure Synapse Analytics SQL di Microsoft Fabric Warehouse di Microsoft Fabric

SQL Server menyediakan perintah yang bukan pernyataan Transact-SQL, tetapi dikenali oleh utilitas sqlcmd dan osql dan Editor Kode Studio Manajemen SQL Server. Perintah ini dapat digunakan untuk memfasilitasi keterbacaan dan eksekusi batch dan skrip.

GO memberi sinyal akhir batch pernyataan Transact-SQL ke utilitas SQL Server.

Konvensi sintaks transact-SQL

Sintaks

GO [count]  

Argumen

count
Adalah bilangan bulat positif. GO sebelumnya batch akan menjalankan berapa kali yang ditentukan.

Keterangan

GO bukan pernyataan Transact-SQL; ini adalah perintah yang dikenali oleh utilitas sqlcmd dan osql dan editor SQL Server Management Studio Code.

Utilitas SQL Server menafsirkan GO sebagai sinyal bahwa mereka harus mengirim batch pernyataan Transact-SQL saat ini ke instans SQL Server. Batch pernyataan saat ini terdiri dari semua pernyataan yang dimasukkan sejak GO terakhir, atau sejak dimulainya sesi ad hoc atau skrip jika ini adalah GO pertama.

Pernyataan Transact-SQL tidak dapat menempati baris yang sama dengan perintah GO. Namun, baris dapat berisi komentar.

Pengguna harus mengikuti aturan untuk batch. Misalnya, setiap eksekusi prosedur tersimpan setelah pernyataan pertama dalam batch harus menyertakan kata kunci EXECUTE. Cakupan variabel lokal (ditentukan pengguna) terbatas pada batch, dan tidak dapat dirujuk setelah perintah 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  

Aplikasi SQL Server dapat mengirim beberapa pernyataan Transact-SQL ke instans SQL Server untuk dieksekusi sebagai batch. Pernyataan dalam batch kemudian dikompilasi ke dalam satu rencana eksekusi. Programmer yang menjalankan pernyataan ad hoc di utilitas SQL Server, atau membangun skrip pernyataan Transact-SQL untuk dijalankan melalui utilitas SQL Server, gunakan GO untuk memberi sinyal akhir batch.

Aplikasi berdasarkan API ODBC atau OLE DB menerima kesalahan sintaks jika mereka mencoba menjalankan perintah GO. Utilitas SQL Server tidak pernah mengirim perintah GO ke server.

Jangan gunakan titik koma sebagai terminator pernyataan setelah GO.

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

Di editor kueri SQL portal Microsoft Fabric, setiap pernyataan SQL berjalan sebagai sesi independen. Konteks sesi tidak bertahan di seluruh pernyataan SQL. Untuk informasi selengkapnya, lihat Editor kueri SQL.

Izin

GO adalah perintah utilitas yang tidak memerlukan izin. Ini dapat dijalankan oleh pengguna mana pun.

Contoh

Contoh berikut membuat dua batch. Batch pertama hanya USE AdventureWorks2022 berisi pernyataan untuk mengatur konteks database. Pernyataan yang tersisa menggunakan variabel lokal. Oleh karena itu, semua deklarasi variabel lokal harus dikelompokkan dalam satu batch. Ini dilakukan dengan tidak memiliki GO perintah sampai setelah pernyataan terakhir yang mereferensikan variabel.

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  

Contoh berikut menjalankan pernyataan dalam batch dua kali.

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