Ver Mensaje Individual
  #6 (permalink)  
Antiguo 09/12/2009, 08:20
rProgged
 
Fecha de Ingreso: agosto-2004
Mensajes: 131
Antigüedad: 20 años, 3 meses
Puntos: 2
Respuesta: LIKE en sql dinámico, PLPGSQL

Hola,

Ya he solucionado el problema. El tema es que al parecer el execute agrega las comillas cuando detecta que un parametro las requiere.

Por ejemplo:

Si pasamos el texto "juan" para buscar, al ocupar

sql = sql || ' AND columna ILIKE ''%' || ltrim(rtrim($1)) || '%''';

Se traduce en ...AND columna ILIKE '%'juan'%'

O por lo menos eso creo. No estoy muy seguro acerca de esto porque según yo debería arrojar un error en la consulta, pero quizás execute capture el error y por eso no lo muestra


En fin, el tema se soluciona al preprocesar el parametro. Concretamente:

auxParam = '%' || parametro || '%';

sql = sql || ' AND columna ILIKE $1';

FOR datos IN EXECUTE sql USING auxParam LOOP...

y eso seria todo. Ahora funciona OK

Bueno si alguien puede aclarar eso de los parámetros en el execute, mejor aún :)

Saludos y gracias