In effetti, ODBC ha la sua parte di problemi con il supporto dei parametri denominati. Tuttavia, è possibile un certo utilizzo dei parametri denominati.
Ad esempio, nel tuo caso funziona la seguente sintassi:
OdbcCommand cmd = sql.CreateCommand();
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = ?";
cmd.Parameters.Add("USER_ID", OdbcType.VarChar, 250).Value = email;
La situazione più complicata è quando non hai una corrispondenza univoca per il parametro come USER_ID =?; ad esempio, quando desideri utilizzare IN operatore in WHERE clausola.
Quindi la seguente sintassi farebbe il lavoro:
OdbcCommand cmd = sql.CreateCommand();
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID IN (?, ?)";
cmd.Parameters.Add("?ID1", OdbcType.VarChar, 250).Value = email1;
cmd.Parameters.Add("?ID2", OdbcType.VarChar, 250).Value = email2;
Si prega di notare l'utilizzo di ? (punto interrogativo) invece di @ (segno di chiocciola) all'interno del nome del parametro. Anche se si noti che la sostituzione dei valori dei parametri in questo caso non ha nulla a che fare con i loro nomi, ma solo con il loro ordine con la raccolta di parametri.
Spero che questo aiuti :-)