Действительно, у ODBC есть свои проблемы с поддержкой именованных параметров.Однако возможно использование определенных именованных параметров.
Например, в вашем случае работает следующий синтаксис:
OdbcCommand cmd = sql.CreateCommand();
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = ?";
cmd.Parameters.Add("USER_ID", OdbcType.VarChar, 250).Value = email;
Более сложная ситуация, когда у вас нет уникального соответствия длятакой параметр как USER_ID =?;Например, если вы хотите использовать оператор IN в предложении WHERE .
Тогда следующий синтаксис выполнит эту работу:
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;
Обратите внимание на использование ? (знак вопроса) вместо @ (в знаке) в имени параметра.Хотя обратите внимание, что подстановка значений параметров в этом случае не имеет ничего общего с их именами, а только с их порядком в наборе параметров.
Надеюсь, это поможет: -)