Процедура, позволяющая вывести очень длинный текст переменной nvarchar. Полезно в случаях, когда переменная используется для перекладки динамического кода.
ALTER PROCEDURE [dbo].[Print_Unlimited]    @String NVARCHAR(MAX)AS
BEGIN
    BEGIN TRY    ---------------------------------------------------------------------------------
    DECLARE @CurrentEnd BIGINT; /* track the length of the next substring */    DECLARE @Offset TINYINT; /* tracks the amount of offset needed */    SET @String = replace(replace(@String, CHAR(13) + CHAR(10), CHAR(10)), CHAR(13), CHAR(10))
    WHILE LEN(@String) > 1    BEGIN        IF CHARINDEX(CHAR(10), @String) BETWEEN 1 AND 4000        BEGIN            SET @CurrentEnd =  CHARINDEX(CHAR(10), @String) -1            SET @Offset = 2        END        ELSE        BEGIN            SET @CurrentEnd = 4000            SET @Offset = 1        END           PRINT SUBSTRING(@String, 1, @CurrentEnd)         SET @String = SUBSTRING(@String, @CurrentEnd + @Offset, LEN(@String))       END /*End While loop*/
    ---------------------------------------------------------------------------------    END TRY    BEGIN CATCH        DECLARE @ErrorMessage VARCHAR(4000)        SELECT @ErrorMessage = ERROR_MESSAGE()            RAISERROR(@ErrorMessage,16,1)    END CATCHEND
