2009-06-08 130 views
1

我想将可变数量的参数传递给MySql存储过程。我已经通过使用xml或解析分隔列表在Sql Server中完成此操作。我猜我可以做MySql中的列表解析,但有其他选择吗?将可变数量的参数传递给存储过程

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

+0

一般而言,我会建议不要这样做;你能告诉我们为什么以及如何做这件事的例子,所以我们可以给出更好的建议吗? – 2009-06-08 18:46:28

回答

1

如果您要从C#到MySql,有很多代码选项。它们基本上采用创建一个传递所有参数的函数的形式。然后,您可以通过一种机制来包装它,以便在特定情况下只指定您关心的参数,为其余部分设置默认值。

您可以使用对象初始值设定项,匿名类,列表,可变参数函数以及其他一些我没有想到的方法来做到这一点。

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

0

你可以创建你的存储过程的“存根”的输入参数,例如,和

CREATE PROCEDURE [dbo].[ThisTakesMultipleOptionalParameters 

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

AS 

然后你就可以用指定的一个或多个参数,或者不EXEC它。

EXEC dbo.ThisTakesMultipleOptionalParameters @ProductName='Doritos' 

EXEC dbo.ThisTakesMultipleOptionalParameters @SerialNumber=666 

EXEC dbo.ThisTakesMultipleOptionalParameters @SerialNumber=696, @ProductName='Juicy Bits' 
相关问题