将可变数量的参数传递给存储过程

时间:2009-06-08 18:40:21

标签: c# .net mysql

我试图将可变数量的参数传递给MySql存储过程。我通过使用xml或解析分隔列表在Sql Server中完成了此操作。我猜我可以在MySql中解析列表但是还有其他选项吗?

我想要做的是我有一个存储要返回的数据过滤器的配置。过滤器基于与需要返回的字段相对应的类别(基于公司的变量编号)。我非常想用这些配置的类别ID编写一个“IN”子句,但我正在通过Stored Proc完成所有工作。

2 个答案:

答案 0 :(得分:1)

如果您从C#转到MySql,有很多代码选项。它们基本上采用创建传递所有参数的函数的形式。然后将其包装在一个机制中,该机制允许您仅指定在特定情况下您关心的参数,为其余情况设置默认值。

您可以使用对象初始值设定项,匿名类,列表,变量参数函数以及其他一些我没有想到的事情来完成此操作。

如果这符合您的设计目标,请选择一种机制并询问更多相关信息。

答案 1 :(得分:0)

您可以在存储过程中创建“存根”输入参数,例如

CREATE PROCEDURE [dbo].[ThisTakesMultipleOptionalParameters

@SerialNumber int = null, 
@ProductName nvarchar(100) = null 

AS

然后你可以用指定的一个或多个参数来执行它。

EXEC dbo.ThisTakesMultipleOptionalParameters @ProductName='Doritos' 

EXEC dbo.ThisTakesMultipleOptionalParameters @SerialNumber=666

EXEC dbo.ThisTakesMultipleOptionalParameters @SerialNumber=696, @ProductName='Juicy Bits'