Utilisation de variables de liaison Oracle avec LIKE en C #

Dans le cadre d’un effort visant à arrêter d’utiliser la génération SQL dynamic et à encourager l’utilisation de variables de liaison, je rencontre certains problèmes.

J’interroge une firebase database Oracle 9i à partir d’une page ASP.NET à l’aide de fournisseurs de données Oracle pour .NET

La requête est

sql = "SELECT somedata FROM sometable WHERE machine = :machineName "; 

Je définis 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 ssortingng parameterList.Add(parameter); 

Cela fonctionne très bien pour l’opérateur “=”. Mais je n’arrive tout simplement pas à le faire fonctionner avec “LIKE”. Je ne sais pas comment formater la requête pour 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 j’ai, ce sont des exceptions ORA-00911 (caractère illégal) et ORA-01036 (nom / valeur illégal).

Qu’est-ce que je fais mal?

Essayer:

 sql = "SELECT somedata FROM sometable WHERE machine LIKE :machineName || '%' "; 

En raison de la variable BIND, il ne serait pas nécessaire qu’elle soit entourée de guillemets simples. Mais le% n’est pas, alors je m’attendrais à ce qu’il doive être encapsulé.