将可变数量的参数传递给存储过程
问题描述:
我想将可变数量的参数传递给MySql存储过程。我已经通过使用xml或解析分隔列表在Sql Server中完成此操作。我猜我可以做MySql中的列表解析,但有其他选择吗?将可变数量的参数传递给存储过程
我想要做的是我有一个配置,存储过滤器的数据返回。该过滤器基于与需要返回的字段相对应的类别(基于公司的可变数字)。我非常想写一个带有这些配置的类别ID的“IN”子句,但我正在通过Stored Proc做所有事情。
答
如果您要从C#到MySql,有很多代码选项。它们基本上采用创建一个传递所有参数的函数的形式。然后,您可以通过一种机制来包装它,以便在特定情况下只指定您关心的参数,为其余部分设置默认值。
您可以使用对象初始值设定项,匿名类,列表,可变参数函数以及其他一些我没有想到的方法来做到这一点。
如果这符合您的设计目标,请选择一种机制并询问更多相关信息。
答
你可以创建你的存储过程的“存根”的输入参数,例如,和
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'
一般而言,我会建议不要这样做;你能告诉我们为什么以及如何做这件事的例子,所以我们可以给出更好的建议吗? – 2009-06-08 18:46:28