Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将非常大的字符串数组传递给SQL存储过程_Java_Sql_Sql Server_Node.js - Fatal编程技术网

Java 将非常大的字符串数组传递给SQL存储过程

Java 将非常大的字符串数组传递给SQL存储过程,java,sql,sql-server,node.js,Java,Sql,Sql Server,Node.js,我有一个存储过程,它接受一个ProductID的字符串数组,每13个字符长,例如:2345697894131,现在从我的后端代码中,我可以通过将数组转换为CSV字符串将其作为CSV传递。 因此,在存储过程中,我可以将其捕获为: @in_product_id VARCHAR(MAX) or maybe VARCHAR(8000) 然后我使用split函数和IN来检查各种情况 例如: select查询的语法可能不正确 但是,这是接收ID数组的理想方式吗。我担心的是,当productid数组太大并且

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

@in_product_id VARCHAR(MAX) or maybe VARCHAR(8000)
然后我使用split函数和IN来检查各种情况 例如:

select查询的语法可能不正确

但是,这是接收ID数组的理想方式吗。我担心的是,当productid数组太大并且超过MAX时,我将不得不跟踪这些丢失的id


我需要知道在存储过程中处理此类输入的理想方法,还是应该限制要获取的productid的数量

阅读有关为您的客户提供表值参数支持的内容。@Richard提到的TVP是性能最好的方法。另一种可能的解决方案是使用XML,但如果您可以使用TVP,那么就不要考虑其他选项是的,这对于我的用例来说已经足够好了,谢谢@Richard,基于Dmitrij XML的解决方案可能会增加更多的复杂性,因此,我将按照您关于使用TVP的建议:)仔细阅读您的客户对表值参数的支持。@Richard提到的TVP是性能最好的方法。另一种可能的解决方案是使用XML,但如果您可以使用TVP,那么就不要考虑其他选项是的,这对于我的用例来说已经足够好了,谢谢@Richard,基于Dmitrij XML的解决方案可能会增加更多的复杂性,所以我将按照您的建议使用TVP:)
IF EXISTS (SELECT top 1 * FROM Table WHERE (productid IN (SELECT (value) from dbo.split(@in_product_id,','))))