Pregunta

En mi procedimiento almacenado que necesitan un parámetro único que me dará un potencial de 3 valores.

Así que puedo hacer algo como:

@p1  <-- my parameter


IF (@p1 ???)  -- include users
     SELECT * FROM USERS


IF (@p1 ???) -- include employees
    SELECT * FROM employees

IF (@p1 ???) -- iclude customers
    SELECT * FROM CUSTOMERS

Estoy adivinando voy a tener que hacer un poco de golpes poco, pero no está seguro de cómo hacerlo en SQL.

Actualizar

De hecho, estoy haciendo una unión de tipo.

¿Fue útil?

Solución

Si @ P1 es un int, o alguna variante de la misma como BIGINT o tinyint, que probablemente podría utilizar bit a bit y.
He aquí un ejemplo:

IF ( @p1 & 1 = 1)
IF ( @p1 & 4 = 4)

Otros consejos

En lugar de tener la línea T-SQL, que a menudo son mejor crear procedimientos almacenados por separado y llamarlos.

Esto se debe a que sólo hay un plan de consulta almacenado en caché por lote.

también , ten cuidado del comentario de Remo: usted está violando la regla de la responsabilidad individual. Esto hace propenso a errores de mantenimiento.

Podría ser una historia diferente si siempre está devolviendo los mismos conjuntos de resultados múltiples (MARS) ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top