Quindi, ecco l'affare. Nel nostro database, avvolgiamo la maggior parte delle nostre letture (cioè istruzioni selezionate) in funzioni con valori di tabella per scopi di sicurezza e modularità. Quindi ho un TVF che definisce uno o più parametri opzionali.Come passare la parola chiave predefinita per la funzione chiamata a valore di tabella in ADO.NET
Credo che avere un TVF con i parametri in default mandati l'uso della parola chiave default
quando si chiama il TVF in questo modo:
select * from fn_SampleTVF(123, DEFAULT, DEFAULT)
va bene, tutto funziona nella Query Analyzer, ma quando arriva il momento di realtà effettuare questa richiesta da ADO.NET, non sono sicuro di come creare un parametro sql che in realtà inserisce la parola default
nello sql reso.
Ho qualcosa o meno così ora:
String qry = "select * from fn_SampleTVF(@requiredParam, @optionalParam)";
DbCommand command = this.CreateStoreCommand(qry, CommandType.Text);
SqlParameter someRequiredParam = new SqlParameter("@requiredParam", SqlDbType.Int);
someRequiredParam.Value = 123;
command.Parameters.Add(someRequiredParam);
SqlParameter optionalParam = new SqlParameter("@optionalParam", SqlDbType.Int);
optionalParam.Value = >>>> WTF? <<<<
command.Parameters.Add(optionalParam);
Quindi, Qualcuno ha qualche idea su come passare default
al TVF?
migliore soluzione che ho visto così lontano è quello di evitare di usare le clausole di default in la definizione dei parametri TVF, passa i null come suggerito da Kevin e crea manualmente i valori predefiniti nel tuo corpo TVF. Ecco un articolo che ho trovato (si tratta di Sprocs, ma il problema è lo stesso). http://social.msdn.microsoft.com/Forums/en/sqldataaccess/thread/3825fe1c-7b7e-4642-826b-ea024804f807 Come per tutte le altre cose associate a Microsoft, ottenendo questo lavoro comporterà un mezzo soluzione alternativa. – Mason