2010-11-15 16 views
4

est-il possible d'utiliser une réflexion sur les paramètres du module T-SQL (fonction, procédure)?Réflexion T-SQL sur les paramètres

procedure x(@foo nvarchar(max),@bar nvarchar(max)) ... 
set @foo = isnull(@foo,0); 
set @bar = isnull(@bar,0); 

serait-il possible de parcourir mes paramètres et de définir leurs valeurs dans une boucle? Ou dois-je utiliser SQLCLR pour cela?

+0

Je me demandais pourquoi vous auriez besoin quelque chose comme ça. Sûrement déclarer des paramètres optionnels serait suffisant (et les instructions 'if' peuvent augmenter toutes les exigences logiques que vous avez). – Oded

+0

@Oded - parce que j'étais trop paresseux pour taper quelques trucs pour 10 paramètres :-) – Axarydax

Répondre

5

Si vous avez tellement de paramètres dont vous avez besoin pour les énumérer par programme, alors vous avez probablement trop de paramètres! Peut-être que passer à une structure de données alternative comme un paramètre de table ou un document XML vous donnerait un moyen plus simple d'intégrer ces données complexes dans vos procédures/fonctions?

Cependant, si vous avez un besoin très spécial pour cela, jetez un oeil à sys.parameters (en supposant que vous utilisez SQL Server 2005 ou plus tard).

+0

incroyable! select sys.parameters.name de sys.parameters rejoindre sys.schemas rejoindre sys.all_objects ... donne au moins les noms des paramètres. – Axarydax

0

Je ne sais pas d'une manière directe, mais vous pourriez trouver la procédure

sp_executesql 

utile, son comme la fonction exec dans les langues les plus Interpretation d'(code de run « string »). Probablement pas la réponse la plus sûre ou la plus populaire, mais elle pourrait être puissante. Qu'est-ce que vous essayez de faire exactement? Je ne peux pas vraiment être plus précis (ou même sûr que cela aidera!) Avec ce que vous avez dit jusqu'ici.

http://blogs.msdn.com/b/pnayak/archive/2007/05/03/how-to-use-parameter-in-tsql-to-actually-use-it-as-identifier-rather-than-the-value.aspx