新しく学んだ事

業務システムの受託開発を主に行っています。人生日々勉強。日々新しく学んだ事を記します。

ストアド内でprintを使用するときの注意点

ストアド内でprint文で変数の値を出力させたいとき、

変数の中身のバイト数によっては切り詰められてしまいます。

 

以下マイクロソフトMSDNより引用

(http://msdn.microsoft.com/ja-jp/library/ms176047.aspx)

メッセージ文字列は、Unicode 以外の文字列の場合は 8,000 バイトまで指定でき、Unicode 文字列の場合は 4,000 バイトまで指定できます。 これより長い文字列は切り詰められます。 varchar(max) と nvarchar(max) は、それぞれ、varchar(8000) および nvarchar(4000) 以下のサイズのデータ型に切り詰められます。

 

ですので、変数の中身を分割して出力するなどの

対応が必要になります。

 

例)

declare strSQL varchar(max)

print substring(strSQL,1,4000)

print substring(strSQL,4001,8000)