Dans le cadre d'un effort pour arrêter d'utiliser la génération SQL dynamique et encourager l'utilisation de variables de liaison, je rencontre des problèmes.Utilisation de variables de liaison Oracle avec LIKE en C#
Je suis Interrogation une base de données Oracle 9i à partir d'une page ASP.NET à l'aide des fournisseurs de données Oracle pour .NET
La requête est
sql = "SELECT somedata FROM sometable WHERE machine = :machineName ";
I définir le paramètre Oracle comme suit
OracleParameter parameter = new OracleParameter();
parameter.ParameterName = "machineName";
parameter.OracleDbType = OracleDbType.Varchar2;
parameter.Value = machine; //machine is a variable of type string
parameterList.Add(parameter);
Cela fonctionne très bien pour l'opérateur "=". Mais je n'arrive pas à le faire fonctionner avec "LIKE". Je ne sais pas comment formater la requête afin qu'elle accepte l'utilisation du caractère générique "%".
J'ai essayé:
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||% ";
et aussi:
parameter.Value = machine+'%';
mais tout ce que je reçois sont ORA-00911 (caractère illégal) et ORA-01036 (nom illégal/valeur) des exceptions.
Qu'est-ce que je fais mal?
Dupliquer de cette question: http://stackoverflow.com/questions/1412023/constructing-a-good-search-query-using-system-data-oracleclient – CodingGorilla