Als Teil der Bemühungen, die dynamische SQL-Generierung zu beenden und die Verwendung von Bindevariablen zu fördern, stößt ich auf einige Probleme.Verwendung von Oracle-Bindungsvariablen mit LIKE in C#
ich eine Oracle 9i-Datenbank für .NET
Die Abfrage von einer ASP.NET-Seite mit Oracle Data Provider bin Abfrage ist
sql = "SELECT somedata FROM sometable WHERE machine = :machineName ";
ich die Oracle-Parameter definieren als
OracleParameter parameter = new OracleParameter();
parameter.ParameterName = "machineName";
parameter.OracleDbType = OracleDbType.Varchar2;
parameter.Value = machine; //machine is a variable of type string
parameterList.Add(parameter);
folgt
Dies funktioniert gut für "=" Operator. Aber ich kann es einfach nicht mit "LIKE" funktionieren lassen. Ich weiß nicht, wie man die Abfrage so formatiert, dass sie die Verwendung des Platzhalters "%" akzeptiert.
Ich habe versucht:
sql = "SELECT somedata FROM sometable WHERE machine LIKE :machineName% ";
sql = "SELECT somedata FROM sometable WHERE machine LIKE ':machineName%' ";
sql = "SELECT somedata FROM sometable WHERE machine LIKE :machineName||% ";
und auch:
parameter.Value = machine+'%';
aber alles, was ich bekommen sind ORA-00911 (unzulässiges Zeichen) und ORA-01036 (illegal Name/Wert) Ausnahmen.
Was mache ich falsch?
Duplizieren Sie diese Frage: http://stackoverflow.com/questions/1412023/constructing-a-good-search-query-using-system-data-oracleclient – CodingGorilla