Pergunta

Na minha procedimento armazenado Eu preciso de um único parâmetro que vai me dar um potencial de 3 valores.

Para que eu possa fazer 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

Eu estou supondo que vai ter que fazer algum barulho pouco, mas não sabe como fazê-lo em sql.

Atualizar

Na verdade, estou fazendo uma união de tipo.

Foi útil?

Solução

Se @ p1 é um int, ou alguma variante dele como bigint ou tinyint, você provavelmente poderia usar bit a bit e.
Aqui está um exemplo:

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

Outras dicas

Ao invés de ter a linha T-SQL, que são muitas vezes melhor criar procedimentos armazenados separados e chamá-los.

Isso ocorre porque há apenas um plano consulta em cache por lote.

Também : Acautelai-vos do comentário de Remus: você está quebrando a regra da responsabilidade única. Isso faz com que erro de manutenção de bruços.

Pode ser uma história diferente se você está sempre retornando os mesmos resultados múltiplos conjuntos (MARS) ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top