Los nombres de parámetros no distinguen entre mayúsculas y minúsculas.
Cuando se realiza una consulta en una base de datos de Oracle mediante el proveedor Microsoft OLE DB para Oracle (MSDAORA) y el proveedor de datos de .NET Framework para ODBC, el uso de la cláusula LIKE para consultar los valores en campos de longitud fija puede no devolver todas las coincidencias esperadas. El motivo es que cuando Oracle compara los valores de los campos de longitud fija con una cláusula LIKE, hace coincidir toda la longitud de la cadena, incluyendo los espacios finales de relleno que pueda haber. Por ejemplo, si una tabla de una base de datos de Oracle contiene un campo denominado "Field1" que se define como char(3) y se escribe el valor "a" en una fila de esa tabla, el siguiente código no devolverá la fila.
Dim queryString As String = "SELECT * FROM Table1 WHERE Field1 LIKE ?"
Dim command As OleDbCommand = New OleDbCommand(queryString, connection)
command.Parameters.Add("@p1", OleDbType.Char, 3).Value = "a"
Dim reader As OleDbDataReader = command.ExecuteReader()
string queryString = "SELECT * FROM Table1 WHERE Field1 LIKE ?";
OleDbCommand command = new OleDbCommand(queryString, connection);
command.Parameters.Add("@p1", OleDbType.Char, 3).Value = "a";
OleDbDataReader reader = command.ExecuteReader();
Esto se produce porque Oracle almacena los valores de columna como "a " (rellenando "a" con espacios finales hasta alcanzar una longitud fija de campo igual a 3), de modo que Oracle no considera "a " una coincidencia para el valor de parámetro "a" cuando se utiliza una comparación LIKE de campos de longitud fija.
Para resolver este problema, anexe un carácter comodín de porcentaje ("%") al valor de parámetro ("a%") o utilice una comparación = de SQL en su lugar.