2010-07-14 20 views
5

È possibile includere un set di valori "costanti" in una stored procedure TSQL? Ho una situazione in cui sto usando un campo intero per memorizzare i valori dei bit e devo piccolo insieme di valori 'costanti' che uso per inserire/select contro quel campoCostanti e Includi file in 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 

ho potuto ripetere lo stesso set di DICHIARANO all'inizio di ogni SP ma preferirei includere il codice, il che significa che posso cambiare in un posto quando vengono aggiunti nuovi valori di bit.

+0

È sempre possibile memorizzare le costanti in una tabella. –

+1

Avrei ancora dovuto tagliare/incollare il codice della piastra della caldaia in tutti i miei SP o unirmi a quel tavolo che sarebbe stato un brutto colpo per le prestazioni. – MrTelly

risposta

2

Fuori dalla mia testa, non è possibile includere costanti del genere.

Di quante costanti stai parlando, però? Invece delle costanti dichiarate, suppongo che potresti creare una funzione per ogni costante che desideri e chiamare la funzione al posto di @CostsCalculated, ma non sono sicuro di quanto sia realistico.

In alternativa, memorizzare i valori in una tabella designata.

+0

+1: non esiste alcuna funzionalità per supportare le costanti in SQL Server, deve essere tramite la funzione o la tabella. Roba come questa è la ragione per cui i pacchetti Oracle sono così fantastici, e strano perché nessun altro database offre funzionalità simili. –