使用 PRINT

PRINT 语句用于将消息返回到应用程序。PRINT 采用字符或 Unicode 字符串表达式作为参数,并将字符串作为消息返回到应用程序。使用 SQLClient 命名空间或 ActiveX 数据对象 (ADO)、OLE DB 和开放式数据库连接 (ODBC) 应用程序编程接口 (API) 将消息作为信息性错误返回到应用程序。SQLSTATE 设置为 01000,本机错误设置为 0,而错误消息字符串设置为在 PRINT 语句中指定的字符串。字符串返回到 DB-Library 应用程序的消息处理程序回调函数中。

PRINT 语句接受任何字符串表达式,包括字符或 Unicode 类型的常量和局部变量名,或返回字符或 Unicode 字符串的函数。PRINT 还接受由两个或多个常量、局部变量或函数串联生成的复杂字符串。

使用 PRINT 可以帮助我们排除 Transact-SQL 代码中的故障、检查数据值或生成报告。

下面的示例在 IF 语句使用了 PRINT,以在 Hex Nut 17 产品编号低于 1100 时返回消息。

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

下面的示例说明了通过串联字符串生成打印消息的两种方法。

-- 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