2010-07-14 10 views
5

¿Es posible incluir un conjunto de valores 'constantes' en un procedimiento almacenado TSQL? Tengo una situación en la que estoy usando un campo entero para almacenar valores de bit y tengo pequeño conjunto de valores 'constante' que utilizo para insertar/SELECT en ese campoConstantes e Incluir archivos en 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 

pude repetir el mismo conjunto de DECLARA en la parte superior de cada SP, pero prefiero incluir el código, lo que significa que puedo cambiar en un lugar a medida que se agregan nuevos valores de bit.

+0

Siempre puede almacenar las constantes en una tabla. –

+1

Todavía tendría que cortar/pegar el código de la placa de la caldera en todos mis SP o unirme a esa mesa que sería un golpe de rendimiento desagradable. – MrTelly

Respuesta

2

Fuera de la cabeza, no puede incluir constantes como esa.

Sin embargo, ¿de cuántas constantes está hablando? En lugar de constantes declaradas, supongo que podría crear una función para cada constante que desee y llamar a la función en lugar de @CostsCalculated, pero no estoy seguro de qué tan realista sea.

De forma alternativa, almacene los valores en una tabla designada.

+0

+1: no hay ninguna funcionalidad para admitir constantes en SQL Server; tiene que ser a través de la función o la tabla. Cosas como esta es por qué los paquetes de Oracle son tan geniales, y extraño por qué ninguna otra base de datos ofrece una funcionalidad similar. –