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