[SQL]PRINT 超長的字串

[SQL]PRINT 超長的字串

SQL PRINT : 向用戶端傳回使用者自訂訊息。

MSDN說明如下,

如果訊息字串不是 Unicode 字串,它的長度可以多達 8,000 個字元;如果它是 Unicode 字串,則可以多達 4,000 個字元。 較長字串會被截斷。
varchar(max) 和 nvarchar(max) 資料類型會被截斷為不大於 varchar(8000) 和 nvarchar(4000) 的資料類型。

 

那如果要PRINT NVARCHAR(MAX)的字串呢? 就只好分次PRINT出去啦,如下,每4,000個字PRINT出去,

DECLARE @DYNAMIC_SQL NVARCHAR(MAX)

--建立一個超過 4,000 字元的變數
SET @DYNAMIC_SQL = N'select 1 as one, 2 as two, 3 as three'
WHILE LEN(@DYNAMIC_SQL) < 4000
BEGIN
	SET @DYNAMIC_SQL = @DYNAMIC_SQL + CHAR(13) +  N'union all select 1 as one, 2 as two, 3 as three'
END 

--一次最多只會PRINT 4,000 個字,所以後面的會被截斷
PRINT '--PRINT ALL'
PRINT @DYNAMIC_SQL

--要全部PRINT出來需要分開來PRINT
--每4,000個字就PRINT出來
DECLARE @START_OFFSET INT
DECLARE @LEN INT
SET @START_OFFSET = 0
SET @LEN = 4000
PRINT '--PRINT BATCH'
WHILE (@START_OFFSET < LEN(@DYNAMIC_SQL))
BEGIN
	PRINT SUBSTRING(@DYNAMIC_SQL, @START_OFFSET, @LEN)
	SET @START_OFFSET = @START_OFFSET + @LEN
END
--再把剩下的給PRINT出來
PRINT SUBSTRING(@DYNAMIC_SQL, @START_OFFSET, @LEN)

 

PRINT

PRINT_BATCH

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^