Come parte di uno sforzo per interrompere l'utilizzo della generazione dinamica di SQL e incoraggiare l'uso di variabili di bind, sto riscontrando alcuni problemi.Utilizzo di variabili di binding Oracle con LIKE in C#
Annunciare la mia interrogazione di un database Oracle 9i da una pagina ASP.NET utilizzando Provider Oracle di dati per NET
La query è
sql = "SELECT somedata FROM sometable WHERE machine = :machineName ";
ho definire il parametro di Oracle come segue
OracleParameter parameter = new OracleParameter();
parameter.ParameterName = "machineName";
parameter.OracleDbType = OracleDbType.Varchar2;
parameter.Value = machine; //machine is a variable of type string
parameterList.Add(parameter);
Funziona bene per l'operatore "=". Ma proprio non riesco a farlo funzionare con "LIKE". Non so come formattare la query in modo che accetti l'utilizzo del carattere jolly "%".
ho provato:
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||% ";
e anche:
parameter.Value = machine+'%';
ma tutto quello che ottiene sono ORA-00911 (carattere illegale) e Ora-01036 (illegale nome/valore) eccezioni.
Cosa sto sbagliando?
Duplicato di questa domanda: http://stackoverflow.com/questions/1412023/constructing-a-good-search-query-using-system-data-oracleclient – CodingGorilla