1. ホーム
  2. sql

[解決済み] Printステートメントを使用してVARCHAR(MAX)を表示するには?

2022-08-16 13:13:27

質問

私は以下のようなコードを持っています。

DECLARE @Script VARCHAR(MAX)

SELECT @Script = definition FROM manged.sys.all_sql_modules sq
where sq.object_id = (SELECT object_id from managed.sys.objects 
Where type = 'P' and Name = 'usp_gen_data')

Declare @Pos int

SELECT  @pos=CHARINDEX(CHAR(13)+CHAR(10),@script,7500)

PRINT SUBSTRING(@Script,1,@Pos)

PRINT SUBSTRING(@script,@pos,8000)

スクリプトの長さは約10,000文字で、私は最大8000を保持することができるprintステートメントを使用しているためです。そのため、2つのprintステートメントを使用しています。

問題は、18000文字のスクリプトがある場合、私は3つのprintステートメントを使用していたことです。

スクリプトの長さに応じて、print文の数を設定する方法はありますか?

どのように解決するのですか?

あなたは WHILE をループさせ、スクリプトの長さを8000で割った数を元にします。

EGです。

DECLARE @Counter INT
SET @Counter = 0
DECLARE @TotalPrints INT
SET @TotalPrints = (LEN(@script) / 8000) + 1
WHILE @Counter < @TotalPrints 
BEGIN
    -- Do your printing...
    SET @Counter = @Counter + 1
END