PDA

Visualizza la versione completa : [DATABASE] Parametro NULL


Il Pazzo
23-07-2009, 12:08
Ho una sotred procedure che accetta in input un parametro... Questo parametro pu anche essere null...

ora io hio questa select


SELECT *
FROM ANNUNCI
WHERE ID_CATEGORIA = @par_id_categoria;


Se il parametro null dovrebbe restituirmi tutto (quindi non dovrei avere la where)...
Ora risolvere la questione con un codice del tipo:


if @par_id_categoria == null
{
SELECT *
FROM ANNUNCI;
}
else
{
SELECT *
FROM ANNUNCI
WHERE ID_CATEGORIA = @par_id_categoria;
}


sembra brutto.... come si risolvono solitamente queste cose? Potete adattare il codice a qualunque tipo di db

standard
24-07-2009, 17:41
non c' una soluzione standard al problema.
Nella mia esperienza mi capitato di vedere differenti soluzioni.
La principale quella di sfruttare linguaggi di programmazione che compongono le where conditions in maniera dinamica.

Con linguaggi meno flessibili mi capitato di vedere soluzioni pi "ingegnose", come ad esempio quello di utilizzare where conditions con la clausula "between" per cui, nel caso in cui il valore sia passato i due estremi del between coincidono, mentre nel caso in cui il valore non sia passato i due estremi divergono fino ai massimi valori.



SELECT *
FROM ANNUNCI
WHERE ID_CATEGORIA BETWEEN @par_id_categoria_min AND @par_id_categoria_max


Un po' si perde in performance, ma con tabelle ben indicizzate, la perdita il pi delle volte accettabile.
ciao

Loading