31 messaggi dal 08 aprile 2006
Io ho una select all'interno del codice con dei parametri che possono esserci o non eserci, c'è un modo per eseguire la query sia che ci sono che se non ci sono i parametri?
Posto il codice sperando di essere stato chiaro

command.CommandText = "SELECT *" +
"FROM TIPO_ST2" +
"WHERE NUM_ST = @NUM_ST and TIPO_SCHEDA = @TIPO_SCHEDA and ID_STABILIMENTO = @ID_STABILIMENTO ";
command.Parameters.Clear();
command.Parameters.AddWithValue("@NUM_ST", numst);
command.Parameters.AddWithValue("@TIPO_SCHEDA", ts);
command.Parameters.AddWithValue("@ID_STABILIMENTO", plant);
i tre parametri possono esserci o non esserci o esserci solo alcuni
9 messaggi dal 20 agosto 2009
Ciao,
io ho fatto così:
in base al fatto che le variabili vengano valorizzate ho accodato il testo alla select, più o meno così

c#
string select = "SELECT * FROM TIPO_ST2 WHERE ";
if(NUM_ST != "")
{
select += " NUM_ST = @NUM_ST";
}

e così via gestendo gli "and" in base alla valorizzazione dei parametri.
Ciao

Rob
Modificato da Roberto.NET il 13 marzo 2013 12.07 -
383 messaggi dal 23 aprile 2007
Oppure puoi provare con una sp del tipo:

create procedure spGetX (
@NUM_ST varchar(MAX)
)
as begin
SELECT *
FROM TIPO_ST2
WHERE ( @NUM_ST IS NULL OR TIPO_ST2.NUM_ST = @NUM_ST)

end

Ho semplificato utilizzando un solo parametro ma se aggiungi gli altri devi solo rispettare al stessa struttura (val is null or column = val).

Questo ti offre due vantaggi:
1) in caso di modifiche puoi intervenire sulla sp senza effettuare rilasci
2) il db lavora meglio(è più veloce) poichè esegue sempre la stessa query e non query differenti

ciao
sergio
31 messaggi dal 08 aprile 2006
ciao gentilissimo putroppo devo scrivere nel codice non fare le sp per una questione di politca (orrenda) aziendale
383 messaggi dal 23 aprile 2007
capisco :( sinceramente non so se il tutto funziona con una semplice query, io non ho mai provato. nel caso, valuta.

ciao
sergio

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.