SET ANSI_NULLS ON; SET QUOTED_IDENTIFIER ON; GO USE master; GO IF OBJECT_ID(N'dbo.sp_print', N'P') IS NOT NULL DROP PROCEDURE dbo.sp_print GO /** author : doeyull.kim e-mail : purumae@gmail.com created date : 2009-07-03 description : ¹®ÀÚ¿­À» PRINTÇÕ´Ï´Ù. return value : 0 = There is no error. **/ CREATE PROCEDURE dbo.sp_print @nvcString nvarchar(max) AS SET NOCOUNT ON; DECLARE @intReturnValue int, @nvcStringBuffer nvarchar(max), @i int, @j int; /**_# Rollback and return if inside an uncommittable transaction.*/ IF XACT_STATE() = -1 BEGIN SET @intReturnValue = 1; ROLLBACK TRANSACTION; GOTO ErrorHandler; END IF LEN(@nvcString) <= 4000 OR @nvcString IS NULL PRINT @nvcString; ELSE BEGIN WHILE 1 = 1 BEGIN SET @nvcStringBuffer = LEFT(@nvcString, 4000); SET @i = CHARINDEX(CHAR(10) + CHAR(13), REVERSE(@nvcStringBuffer)); SET @j = (DATALENGTH(@nvcStringBuffer) / 2) - CASE @i WHEN 0 THEN 0 ELSE @i + 1 END; SET @nvcStringBuffer = LEFT(@nvcStringBuffer, @j); PRINT @nvcStringBuffer; SET @nvcString = CASE @i WHEN 0 THEN @nvcString ELSE STUFF(@nvcString, @j + 1, 2, N'') END; SET @nvcString = SUBSTRING(@nvcString, @j + 1, (DATALENGTH(@nvcString) / 2) - @j); IF LEN(@nvcString) <= 4000 BEGIN PRINT @nvcString; BREAK; END END END RETURN 0; ErrorHandler: RETURN @intReturnValue; EXEC sp_addextendedproperty N'MS_Description', N'¹®ÀÚ¿­À» PRINTÇÕ´Ï´Ù.', 'schema', N'dbo', N'procedure', N'sp_print' EXEC sp_addextendedproperty N'MS_Description', N'ÇÁ¸°Æ® ÇÒ ¹®ÀÚ¿­.', 'schema', N'dbo', N'procedure', N'sp_print', N'parameter', N'@nvcString' GO GRANT EXECUTE ON OBJECT::sp_print TO [public]; GO