Share via


PRINT (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

ユーザー定義メッセージをクライアントに返します。 たとえば、SQL Server Management Studio では、 PRINT クエリ結果ウィンドウの [メッセージ] タブに出力されます。

Transact-SQL 構文表記規則

構文

PRINT msg_str | @local_variable | string_expr

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

msg_str

文字列または Unicode 文字列定数。 詳細については、「定数」を参照してください。

@local_variable

任意の有効な文字データ型の変数。 @local_variable char、ncharvarchar、または nvarchar である必要があります。または、それらのデータ型に暗黙的に変換できる必要があります。

string_expr

文字列を返す式。 連結したリテラル値、関数、および変数を含むことができます。 詳細については、「」をご覧ください。

解説

メッセージ文字列は、Unicode 以外の文字列の場合は最大 8,000 文字、Unicode 文字列の場合は 4,000 文字までです。 これより長い文字列は切り詰められます。 Varchar (max)nvarchar (max) データ型は、varchar(8000) および nvarchar(4000) ではなくなったデータ型に切り詰められます。

RAI Standard Edition RROR を使用してメッセージを返すこともできます。 RAISERROR には、次のような PRINT利点があります。

  • RAISERROR では、C 言語標準ライブラリの printf 関数でモデル化されたメカニズムを使用して、引数をエラー メッセージ文字列に置き換える機能がサポートされています。

  • RAISERROR では、テキスト メッセージに加えて、一意のエラー番号、重大度、状態コードを指定できます。

  • RAISERRORは、sp_addmessage (Transact-SQL) システム ストアド プロシージャを使用して作成されたユーザー定義メッセージを返すために使用できます。

A. 条件付きで PRINT を実行する (IF EXISTS)

次の例では、PRINT ステートメントを使用して条件に応じてメッセージを返します。

IF @@OPTIONS & 512 <> 0
    PRINT N'This user has SET NOCOUNT turned ON.';
ELSE
    PRINT N'This user has SET NOCOUNT turned OFF.';
GO

B. 文字列をビルドして表示する

次の例では、GETDATE 関数の結果を nvarchar データ型に変換し、リテラル テキストと連結します。この値は PRINT

PRINT N'This message was printed on ' + RTRIM(CAST(GETDATE() AS NVARCHAR(30))) + N'.';
GO

次の例は、変数にメッセージ テキストを作成する方法を示しています。

DECLARE @PrintMessage NVARCHAR(50);
SET @PrintMessage = N'This message was printed on ' + RTRIM(CAST(GETDATE() AS NVARCHAR(30))) + N'.';
PRINT @PrintMessage;
GO

例: Azure Synapse Analytics、Analytics Platform System (PDW)

C: 条件付きで印刷を実行する

次の例では、PRINT ステートメントを使用して条件に応じてメッセージを返します。

IF DB_ID() = 1
    PRINT N'The current database is ''master''.';
ELSE
    PRINT N'The current database is not ''master''.';
GO