ODBC má skutečně svůj podíl na problémech s podporou pojmenovaných parametrů. Určité použití pojmenovaných parametrů je však možné.
Například ve vašem případě funguje následující syntaxe:
OdbcCommand cmd = sql.CreateCommand();
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = ?";
cmd.Parameters.Add("USER_ID", OdbcType.VarChar, 250).Value = email;
Ošemetnější situace je, když nemáte jedinečnou shodu pro parametr jako USER_ID =?; např. když chcete použít IN operátor v WHERE doložka.
Pak by to udělala následující syntaxe:
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;
Všimněte si prosím použití ? (otazník) místo @ (zavináč) v názvu parametru. I když si všimněte, že nahrazení hodnot parametrů v tomto případě nemá nic společného s jejich názvy, ale pouze s jejich pořadím v kolekci parametrů.
Doufám, že to pomůže :-)