2010-07-14 7 views
5

Est-il possible d'inclure un ensemble de valeurs 'constantes' dans une procédure stockée TSQL? J'ai une situation où j'utilise un champ entier pour stocker des valeurs de bits et je petit ensemble de valeurs « constantes » que j'utiliser pour insérer/select contre ce champConstantes et fichiers Include dans TSQL

DECLARE @CostsCalculated int = 32 
DECLARE @AggregatedCalculated int = 64 

--Set CostCalculated bit 
update MyTable set DataStatus = ISNULL(DataStatus, 0) | @CostsCalculated 
where Id = 10 

--How many rows have that bit set 
select count(*) from MyTable where ISNULL(DataStatus, 0) & @CostsCalculated = @CostsCalculated 

Je pourrais répéter la même série de DECLARE en haut de chaque SP mais je préfère inclure le code, ce qui signifie que je peux changer à un endroit où de nouvelles valeurs de bit sont ajoutées.

+0

Vous pouvez toujours stocker les constantes dans un tableau. –

+1

Je devrais encore couper/coller le code de la plaque de chaudière dans tous mes SP ou rejoindre cette table qui serait un mauvais coup de performance. – MrTelly

Répondre

2

En haut de ma tête, vous ne pouvez pas inclure des constantes comme ça.

De combien de constantes parlez-vous? Au lieu de constantes déclarées, je suppose que vous pourriez créer une fonction pour chaque constante que vous voulez, et appelez la fonction au lieu de @CostsCalculated, mais je ne suis pas sûr de la façon dont c'est réaliste.

Alternativement, stockez les valeurs dans une table désignée.

+0

+1: Il n'y a aucune fonctionnalité pour prendre en charge les constantes dans SQL Server - doit être via la fonction ou la table. Des trucs comme celui-ci sont la raison pour laquelle les paquets Oracle sont géniaux, et c'est pourquoi aucune autre base de données n'offre des fonctionnalités similaires. –