Domanda

Nella mia procedura immagazzinata Ho bisogno di un solo parametro che mi darà un potenziale di 3 valori.

Così posso fare qualcosa di simile:

@p1  <-- my parameter


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


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

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

Sono indovinando dovrò fare un po 'po' colpi, ma non sono sicuro come farlo in SQL.

Aggiorna

Sono in realtà facendo un UNION di sorta.

È stato utile?

Soluzione

Se @ P1 è un int, o qualche variante di esso come bigint o tinyint, probabilmente si potrebbe usare bit a bit e.
Ecco un esempio:

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

Altri suggerimenti

Invece di avere la linea T-SQL, si sono spesso meglio creare le stored procedure distinte e li chiama.

Questo è perché c'è solo una cache piano di query per partita.

anche , fate attenzione di commento di Remus: si sta infrangendo la regola di responsabilità unico. Questo rende la manutenzione errore incline.

Potrebbe essere una storia diversa se si sta ritornando sempre gli stessi risultati multipli set (MARS) ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top