2016-10-21 4 views
0

私は、ストアドプロシージャへの入力として渡す必要があるカンマ区切りの番号を持っています。私はそうで1,2,3,4,5,6,7,8のように、このパラメータに入力を送信していますSQL Server:可変長の入力変数を渡す方法は?長さはどんな限界まで上がることができますか?

@CustStockLogIdList varchar(1000) 

:よう

入力パラメータが見えます。リストは任意の長さにすることができます。

この場合、1000文字を超える場合は、渡された値を1000文字に減らして残りの処理を行います。

しかし、私は長さについてはわかりません。

私はvarcharの読み取り制限値が8000であるため、@CustStockLogIdList varchar(MAX)または@CustStockLogIdList varchar(8000)も8000文字の長さを許可しますが、それ以上の値が必要です。私は必要な最大の長さについてはわかりません。

答えて

2

VARCHAR(MAX)を使用すると、2GBのデータを送信できます。

しかし、私は、あなたが入力

あなたは、パラメータとしてこの udt_CustStockLogIdListを受け入れるように手順を変更する必要が
Create type udt_CustStockLogIdList as table 
(
id int 
) 

としてプロシージャの入力パラメータの代わりに、カンマ区切りリストとして表値のパラメータを使用することをお勧めします。

Alter procedure prc_proc_name(@CustStockLogIdList_TT udt_CustStockLogIdList READONLY) 
As 
Begin 
.. 
End 

Declare @CustStockLogIdList_TT udt_CustStockLogIdList 

Insert into @CustStockLogIdList_TT 
values (1),(2),(3),.. 

Exec prc_proc_name CustStockLogIdList_TT 
プロシージャを呼び出すに
関連する問題