2016-07-19 1 views
0

J'ai créé une procédure SQL qui remplace toutes les valeurs d'un champ avec Xs de la même longueur que les valeurs d'origine.Procédure SQL - procédure stockée, champ de passe et nom de table à l'exécution

Update Table 
Set  Name = Replicate('x', Len(Name)) 

Je suis en train de modifier cette procédure afin que je puisse passer juste une table et de champ en tant que paramètre sur l'exécution au lieu de modifier la procédure stockée chaque fois que je veux passer un nouveau champ. Y a-t-il un moyen de faire cela?

C'est ce que je pense que les déclarations devraient exécuter ressembler quand je veux x les valeurs dans un autre domaine:

Exec MyProcedure ‘Users’, ‘Email’ 
+0

Vous pouvez le faire dans une procédure stockée avec SQL dynamique, mais c'est dangereux. Vous voudrez peut-être expliquer ce que vous essayez vraiment de faire ici afin que nous puissions proposer des options plus sûres et plus fiables. – RBarryYoung

+0

Merci pour votre réponse. Vous avez raison, une procédure comme celle-ci est dangereuse, mais elle ne sera exécutée que dans un DB de test et j'ai un contrôle intégré qui assure cela. Comment pourrais-je faire cela avec SQL dynamique? – Cat4Storm

Répondre

0

Vous pouvez utiliser EXEC pour exécuter des instructions SQL comme ceci: EXEC (@sqlCommand) . SqlCommand serait la chaîne composée par vous en fonction des paramètres reçus.

De plus, une autre option consisterait à exécuter l'instruction à l'aide de sp_executesql.