Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.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
将未知数量的参数传递给SQL存储过程_Sql_Vb.net_Stored Procedures_Parameters - Fatal编程技术网

将未知数量的参数传递给SQL存储过程

将未知数量的参数传递给SQL存储过程,sql,vb.net,stored-procedures,parameters,Sql,Vb.net,Stored Procedures,Parameters,在通过vb.net执行存储过程方面,我是个新手。但是,我想知道是否有人知道我如何在我的数据库类中创建一个函数来接受SP名称和未知数量的参数及其关联值,以便对SQL数据库执行 这将允许执行任何旨在使用类中的相同函数返回datatable的存储过程 任何帮助都会很好。我知道存在SqlParamateCollection,或者我可以使用参数数组吗?您可以通过在中添加默认值来实现这一点,因为您可能无法传入参数 W3Schools对此有很好的解释 如果这不能回答您关于如何在vb.net中执行此操作的问题,

在通过vb.net执行存储过程方面,我是个新手。但是,我想知道是否有人知道我如何在我的数据库类中创建一个函数来接受SP名称和未知数量的参数及其关联值,以便对SQL数据库执行

这将允许执行任何旨在使用类中的相同函数返回datatable的存储过程


任何帮助都会很好。我知道存在SqlParamateCollection,或者我可以使用参数数组吗?

您可以通过在中添加默认值来实现这一点,因为您可能无法传入参数

W3Schools对此有很好的解释

如果这不能回答您关于如何在vb.net中执行此操作的问题,有几种方法可以在代码中处理此问题。最直接的是if语句

if (there is a value to pass in then) then
     command.parameters.addwithvalue("@Parameter", your value)
endif

这就是我正在做的:

Public Sub CallSproc(SprocName As String, Server As String, Database As String, Optional ParameterArray(,) As String = Nothing)

只需创建一个二维数组,将其传递给传递参数名称和值的子对象。我使用ubound将它们分开,这将告诉您数组中有多少个参数。

我已经编辑了您的标题。请参阅“”,其中一致意见是“不,他们不应该”。您是否提前知道参数的名称,或者您必须从数据库中查找这些名称?我将知道存储过程的名称和所有参数。我的目标是让一个函数执行我通过的任何过程。嗨,首先感谢你花时间回复我。然而,我知道我可以创建一个sql连接并使用addith值等添加参数,但我正在寻找一个可以传递两个参数的函数。第一个是存储过程名&下一个是参数及其值的集合。我希望我可以通过使用name参数传入这些参数,并使用代码执行存储过程,传递参数集合。只有当存储过程中的所有参数都有默认值,并且传递到函数中的参数集合中的每个参数都有一个值时,才能这样做。例如,若存储过程中有3个参数,则集合必须有3个项,未使用的项要么为NOTHING,要么为dbnull.value。我希望我正确理解了这个问题,如果这有帮助,我将编辑我的答案。