将一个非常大的string数组传递给SQL存储过程

我有这个存储过程,每个13个字符长的产品的string数组,例如:2345697894131,现在从我的后端代码,我可以通过将其转换为一个CSVstring作为CSV传递它。 因此,在存储过程中,我可以捕获它:

@in_product_id VARCHAR(MAX) or maybe VARCHAR(8000) 

然后我使用分裂函数与IN来检查各种条件,例如:

 IF EXISTS (SELECT top 1 * FROM Table WHERE (productid IN (SELECT (value) from dbo.split(@in_product_id,',')))) 

select查询的语法可能不正确。

但这是采取一系列ID的理想方式。 我担心的是当产品数组太大而超过MAX时,我将不得不跟踪这些被错过的ID。

我需要知道在存储过程中处理这种input的理想方式,还是应该限制要采取的产品数量?