我有逗号分隔的数字,我们需要将它作为输入传递给存储过程。
输入参数如下:
@CustStockLogIdList varchar(1000)
我正在向此参数发送输入,例如1,2,3,4,5,6,7,8
,依此类推。列表可以是任何长度。
我知道在这种情况下,如果它超过1000个字符,它会将传递的值减少到1000个字符并进行其余的处理。
但我不确定长度。
当我读取varchar的限制为8000时,@CustStockLogIdList varchar(MAX)
或@CustStockLogIdList varchar(8000)
也允许长度为8000个字符,但我想要更多。我不确定我需要的最大长度。
答案 0 :(得分:2)
您可以使用VARCHAR(MAX)
来发送 2GB 数据。
但我建议你使用Table值参数作为过程输入参数而不是逗号分隔列表作为输入
Create type udt_CustStockLogIdList as table
(
id int
)
您需要更改过程以接受此udt_CustStockLogIdList
作为参数。
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