PRINT の使用

アプリケーションにメッセージを返すには、PRINT ステートメントを使用します。PRINT は、文字式または Unicode 文字列式のいずれかをパラメーターとして受け取り、その文字列をメッセージとしてアプリケーションに返します。SQLClient 名前空間、または ADO (ActiveX Data Object)、OLE DB、および ODBC (Open Database Connectivity) アプリケーション プログラミング インターフェイス (API) を使用して、メッセージが情報エラーとしてアプリケーションに返されます。SQLSTATE は 01000 に、ネイティブ エラーは 0 に設定され、エラー メッセージ文字列は PRINT ステートメントに指定された文字列に設定されます。DB-Library アプリケーションではこの文字列がメッセージ ハンドラー コールバック関数に返されます。

PRINT ステートメントには、文字定数や Unicode 定数、文字や Unicode のローカル変数名、文字列や Unicode 文字列を返す関数など、任意の文字列式を指定できます。PRINT には複数の定数、ローカル変数、または関数を連結して作成した複合文字列も指定できます。

PRINT を使用して Transact-SQL コードのトラブルシューティングを行い、データ値を確認したりレポートを生成します。

次の例では、IF ステートメント内で PRINT を使用して、Hex Nut 17 製品の数が 1,100 未満まで減少したときにメッセージを返します。

USE AdventureWorks2008R2;
GO
IF (SELECT SUM(i.Quantity)
    FROM Production.ProductInventory i
    JOIN Production.Product p 
    ON i.ProductID = p.ProductID
    WHERE Name = 'Hex Nut 17'
    ) < 1100
    PRINT N'There are less than 1100 units of Hex Nut 17 in stock.'
GO

次の例では、ローカル変数、システム関数、およびテキスト文字列を連結して出力します。

USE AdventureWorks2008R2;
GO
DECLARE @MyObject NVARCHAR(257);

SET @MyObject = N'Production.Product';

PRINT N'Object Name: ' + @MyObject
PRINT N'   Object ID: ' + STR(OBJECT_ID(@MyObject))
GO

次の例では、文字列を連結して出力メッセージを作成する 2 つの方法を示します。

-- Build a print message by concatenating strings in a PRINT
-- statement.
PRINT N'The Database Engine instance '
    + RTRIM(@@SERVERNAME)
    + N' is running SQL Server build '
    + RTRIM(CAST(SERVERPROPERTY(N'ProductVersion ') AS NVARCHAR(128)));
GO
-- This shows building a character variable that is used to
-- print a message.
DECLARE @Msg NVARCHAR(300);

SELECT @Msg = N'The Database Engine instance '
    + RTRIM(@@SERVERNAME)
    + N' is running SQL Server build '
    + RTRIM(CAST(SERVERPROPERTY(N'ProductVersion') AS NVARCHAR(128)));

PRINT @Msg;
GO