Поделиться через


Использование инструкции PRINT

Инструкция PRINT применяется для возврата сообщений приложениям. В качестве параметра инструкция PRINT принимает строку символов или строку в Юникоде и возвращает приложению эту строку в виде сообщения. Сообщение возвращается приложениям в виде информационной ошибки при помощи пространства имен SQLClient или прикладного программного интерфейса ADO, OLE DB или ODBC. Параметр SQLSTATE принимает значение 01000, значение собственной ошибки становится равным 0, а в строку сообщения об ошибке помещается строка символов, указанная в инструкции PRINT. В приложениях DB-Library строка возвращается функции обратного вызова обработчика сообщений.

Инструкция PRINT принимает только символьные строковые выражения, включая символьные константы и константы в Юникоде, символьные имена локальных переменных и имена в Юникоде, а также функции, возвращающие символьную строку или строку в Юникоде. Также инструкция PRINT поддерживает сложные строки, построенные путем сцепления двух или более констант, локальных переменных или функций.

Используйте инструкцию PRINT при диагностике кода Transact-SQL, проверке значений данных и формировании отчетов.

В следующем примере инструкция PRINT используется внутри инструкции IF и возвращает сообщение, когда номер продукта 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