分享方式:


PRINT (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉儲

向用戶端傳回使用者自訂訊息。 例如,在 SQL Server Management Studio 中, PRINT 輸出至查詢結果視窗的 [訊息] 索引標籤。

Transact-SQL 語法慣例

Syntax

PRINT msg_str | @local_variable | string_expr

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

msg_str

字元字串或 Unicode 字串常數。 如需詳細資訊,請參閱常數

@local_variable

任何有效字元數據類型的變數。 @local_variable必須是 charncharvarchar 或 nvarchar,或者必須能夠隱含地轉換成這些數據類型。

string_expr

傳回字串的表達式。 它可以包括串連的常值、函數和變數。 如需詳細資訊,請參閱 表達式

備註

如果訊息字串是非 Unicode 字串,則訊息字串長度最多可達 8,000 個字元,如果它是 Unicode 字串,則長度為 4,000 個字元。 較長字串會被截斷。 varchar(max)nvarchar(max) 資料類型都會被截斷為長度不超過 varchar(8000)nvarchar(4000) 的資料類型。

RAISERROR 也可以用來傳回訊息。 RAISERROR具有下列優點:PRINT

  • RAISERROR 支援使用 C 語言標準連結庫 printf 函式上模型化的機制,將自變數取代為錯誤訊息字串。

  • RAISERROR 除了文字訊息之外,還可以指定唯一的錯誤號碼、嚴重性和狀態代碼。

  • RAISERROR 可用來傳回使用 sp_addmessage (Transact-SQL) 系統預存程式所建立的使用者定義訊息。

範例

A. 有條件地執行列印 (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