Memang, ODBC memiliki masalah dengan mendukung parameter bernama. Namun, penggunaan tertentu dari parameter bernama dimungkinkan.
Misalnya, dalam kasus Anda, sintaks berikut berfungsi:
OdbcCommand cmd = sql.CreateCommand();
cmd.CommandText = "SELECT UNIQUE_ID FROM userdetails WHERE USER_ID = ?";
cmd.Parameters.Add("USER_ID", OdbcType.VarChar, 250).Value = email;
Situasi yang lebih rumit adalah ketika Anda tidak memiliki kecocokan unik untuk parameter seperti USER_ID =?; misalnya, ketika Anda ingin menggunakan IN operator di WHERE klausa.
Kemudian sintaks berikut akan melakukan pekerjaan:
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;
Harap perhatikan penggunaan ? (tanda tanya) bukannya @ (di tanda) dalam nama parameter. Meskipun perhatikan bahwa substitusi nilai parameter dalam hal ini tidak ada hubungannya dengan namanya, tetapi hanya dengan urutannya dengan koleksi parameter.
Semoga membantu :-)