2011-08-03 3 views
-1

Je rencontre un problème lors de la création de paramètres dynamiques dans une procédure stockée. J'ai deux paramètres nvarchar dans une procédure stockée qui sont une combinaison de mots séparés par une virgule. Par exemple:Paramètres dynamiques de la procédure stockée

'Login, check, take, return' and 'admin, yes, no, yes' 

-je inclure ces paramètres dans la clause where comme

login=admin and check=yes and take=no and return=yes 

Le problème est que le nombre de mots dans les paramètres sont dynamiques. Il peut varier de 1 à 20 mots.

Y at-il une solution pour gérer cela?

Répondre

2
  • Définir 20 paramètres par défaut de NULL
  • uniquement définis ceux que vous voulez
  • Dans la clause WHERE ne (@Param IS NULL or Column = @Param)

Si vous avez complètement les noms dynamiques de paramètres SQL et aléatoires alors il est un de

  • vous ne devriez pas utiliser des procédures stockées
  • vous devez écrire plus de procédures stockées pour différents cas d'utilisation

Vous n'auriez pas une méthode entièrement.

+0

Je pense que l'aide de 20 paramètres ne sont pas une bonne façon et bien sûr je ne suis pas obtenir ces paramètres comme une chaîne séparées par des virgules. Seulement deux paramètres sont là. – Mukesh

+1

À quel point pensez-vous que l'analyse d'un fichier CSV est laide à 20 paramètres? – gbn

0

Vous devez créer une requête SQL dynamique dans votre procédure stockée. Dans la procédure stockée, vous devez diviser votre paramètre et valeur et construit dynamique où la condition.

+0

Oui, je peux diviser les deux paramètres en utilisant une fonction. Mais où je peux le sauver? Puis-je l'enregistrer en tant que tableau? Comment l'inclure dans la condition où. – Mukesh

0

Vous devez enregistrer dans la variable dans la procédure stockée.

E.g.

@sql as nvarchar(1000) 
@sql = 'select * from tablename where' 

Maintenant, on boucle ur variables comme

@sql = @sql +' '+ @firstvariable + ' = '''+ @valuevariable +'' AND ' 
Questions connexes