Использование инструкции 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
См. также