Наистина 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;
Моля, обърнете внимание на използването на ? (въпросителен знак) вместо @ (при знак) в името на параметъра. Имайте предвид обаче, че заместването на стойностите на параметрите в този случай няма нищо общо с имената им, а само с реда им в колекцията от параметри.
Надявам се това да помогне :-)