2009-06-08 7 views
1

J'essaie de transmettre une quantité variable de paramètres dans un processus stocké MySql. J'ai fait cela dans Sql Server en utilisant xml ou en analysant une liste délimitée. Je devine que je pourrais faire l'analyse d'une liste dans MySQL mais y at-il d'autres options?Passage d'un nombre variable de paramètres à la procédure stockée

Ce que j'essaie de faire est que j'ai une configuration qui stocke un filtre de données à retourner. Le filtre est basé sur des catégories qui correspondent à des champs qui doivent être retournés (nombre variable basé sur l'entreprise). Je veux à peu près écrire une clause "IN" avec ces identifiants de catégorie configurés, mais je fais tout par l'intermédiaire de Stored Proc.

+0

En général, je suggère de ne pas faire cela; pouvez-vous nous donner un exemple de pourquoi et comment vous faites cela, alors peut-être que nous pouvons donner de meilleurs conseils? –

+0

ajouté quelques plus de détails de problème – CSharpAtl

Répondre

1

Il y a beaucoup d'options de code, si vous allez de C# à MySQL. Ils prennent essentiellement la forme de créer une fonction qui passe tous les paramètres. Ensuite, vous enveloppez dans un mécanisme qui vous permet de spécifier uniquement les paramètres qui vous intéressent dans une situation spécifique, en définissant les paramètres par défaut pour le reste.

Vous pouvez le faire avec des initialiseurs d'objet, des classes anonymes, des listes, des fonctions d'argument variable, et probablement d'autres choses auxquelles je n'ai pas pensé.

Si cela répond à vos objectifs de conception, choisissez un mécanisme et demandez-en plus à ce sujet.

0

Vous pouvez créer par exemple « stub » paramètres d'entrée dans votre proc stocké, et

CREATE PROCEDURE [dbo].[ThisTakesMultipleOptionalParameters 

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

AS 

Ensuite, vous pouvez EXEC avec un ou plusieurs paramètres spécifiés, ou non.

EXEC dbo.ThisTakesMultipleOptionalParameters @ProductName='Doritos' 

EXEC dbo.ThisTakesMultipleOptionalParameters @SerialNumber=666 

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