2009-06-08 177 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' 
相關問題