SQL Server ユーティリティのステートメントに移動SQL Server Utilities Statements - GO

適用対象:○SQL Server (2008 以降)×Azure SQL Database×Azure SQL Data Warehouse ×Parallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Serverコマンドがない Transact-SQLTransact-SQLによって認識される、ステートメントが、 sqlcmdosqlユーティリティおよび SQL Server Management StudioSQL Server Management Studioコード エディター。 provides commands that are not Transact-SQLTransact-SQL statements, but are recognized by the sqlcmd and osql utilities and SQL Server Management StudioSQL Server Management Studio Code Editor. これらのコマンドを使用すると、バッチおよびスクリプトの読み取りと実行が容易になります。These commands can be used to facilitate the readability and execution of batches and scripts.

GO は、バッチの終端を表す Transact-SQLTransact-SQLステートメントを SQL ServerSQL Serverユーティリティです。GO signals the end of a batch of Transact-SQLTransact-SQL statements to the SQL ServerSQL Server utilities.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax


GO [count]  

引数Arguments

countcount
正の整数を指定します。Is a positive integer. GO の前のバッチが、指定された回数実行されます。The batch preceding GO will execute the specified number of times.

解説Remarks

GO は、 Transact-SQLTransact-SQL ; ステートメントによって認識されるコマンド、 sqlcmdosqlユーティリティおよび SQL Server Management StudioSQL Server Management Studioコード エディター。GO is not a Transact-SQLTransact-SQL statement; it is a command recognized by the sqlcmd and osql utilities and SQL Server Management StudioSQL Server Management Studio Code editor.

SQL ServerSQL Server のユーティリティでは、GO は、現在の Transact-SQLTransact-SQL ステートメントのバッチを SQL ServerSQL Server インスタンスに送信するためのシグナルとして解釈されます。 utilities interpret GO as a signal that they should send the current batch of Transact-SQLTransact-SQL statements to an instance of SQL ServerSQL Server. 現在のステートメントのバッチは、前回の GO の後に入力されたすべてのステートメントで構成されます。最初の GO の場合、現在のバッチは、アドホック セッションまたはスクリプトの開始後に入力されたすべてのステートメントで構成されます。The current batch of statements is composed of all statements entered since the last GO, or since the start of the ad hoc session or script if this is the first GO.

Transact-SQLTransact-SQL ステートメントを GO コマンドと同じ行に入力することはできません。A Transact-SQLTransact-SQL statement cannot occupy the same line as a GO command. ただし、GO コマンドの行にコメントは入力できます。However, the line can contain comments.

ユーザーは、バッチの規則に従う必要があります。Users must follow the rules for batches. たとえば、バッチの最初のステートメント以降でストアド プロシージャを実行する場合は、バッチに EXECUTE キーワードを含める必要があります。For example, any execution of a stored procedure after the first statement in a batch must include the EXECUTE keyword. ローカル (ユーザー定義) 変数のスコープはバッチ内に限られ、GO コマンドの後では参照できません。The scope of local (user-defined) variables is limited to a batch, and cannot be referenced after a GO command.

USE AdventureWorks2012;  
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  

SQL ServerSQL Server アプリケーションでは、複数の Transact-SQLTransact-SQL ステートメントを SQL ServerSQL Server インスタンスに送信し、バッチとして実行できます。 applications can send multiple Transact-SQLTransact-SQL statements to an instance of SQL ServerSQL Server for execution as a batch. バッチ内のステートメントは、1 つの実行プランにコンパイルされます。The statements in the batch are then compiled into a single execution plan. プログラマでアドホック ステートメントを実行する、 SQL ServerSQL Serverユーティリティ、またはのスクリプトを作成 Transact-SQLTransact-SQLステートメント実行する、 SQL ServerSQL Serverユーティリティ、GO を使用して、バッチの終了を通知します。Programmers executing ad hoc statements in the SQL ServerSQL Server utilities, or building scripts of Transact-SQLTransact-SQL statements to run through the SQL ServerSQL Server utilities, use GO to signal the end of a batch.

ODBC または OLE DB API に基づくアプリケーションで、GO コマンドを実行しようとすると、構文エラーになります。Applications based on the ODBC or OLE DB APIs receive a syntax error if they try to execute a GO command. SQL ServerSQL Serverユーティリティは、サーバーに GO コマンドを送信することはありません。The SQL ServerSQL Server utilities never send a GO command to the server.

移動した後、ステートメントのターミネータとしてセミコロンを使用しません。Do not use a semicolon as a statement terminator after GO.

PermissionsPermissions

GO は、権限を必要としないユーティリティ コマンドです。GO is a utility command that requires no permissions. すべてのユーザーが実行できます。It can be executed by any user.

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

使用例Examples

次の例では、2 つのバッチを作成します。The following example creates two batches. 最初のバッチにのみが含まれています、USE``AdventureWorks2012データベース コンテキストを設定するステートメント。The first batch contains only a USE``AdventureWorks2012 statement to set the database context. その他のステートメントではローカル変数が使用されます。The remaining statements use a local variable. このため、すべてのローカル変数宣言を 1 つのバッチにまとめる必要があります。Therefore, all local variable declarations must be grouped in a single batch. これには、変数を参照する最後のステートメントが実行されてから GO コマンドを実行するようにします。This is done by not having a GO command until after the last statement that references the variable.

USE AdventureWorks2012;  
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  

次の例は、2 回、バッチ内のステートメントを実行します。The following example executes the statements in the batch twice.

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