Buenas tardes Pedro
CREATE OR REPLACE FUNCTION fn_busca_almacen_por_criterio(in_criterio character varying DEFAULT ''::character varying, in_valor character varying DEFAULT ''::character varying) RETURNS SETOF vw__almacen AS $BODY$ DECLARE in_criterio alias FOR $1; in_valor alias FOR $2; DECLARE lr_ret RECORD; t_consulta TEXT:=$$SELECT * FROM vw__almacen WHERE $$ || in_criterio || $$ LIKE '%$$ || in_valor || $$%'$$; BEGIN FOR lr_ret IN EXECUTE t_consulta LOOP RETURN NEXT lr_ret; END LOOP; END;$BODY$ LANGUAGE plpgsql VOLATILE COST 100 ROWS 1000; 2016-05-24 12:45 GMT-05:00 Pedro PG <pedr...@outlook.com>: > Hola lista, requiero de su ayuda, pues verán, en la siguiente función > necesito que el primer parametro IN in_criterio represente a la columna en > donde se buscara y el segundo parametro IN in_valor represente el valor a > buscar, ¿como es que puedo hacerlo?. He intentado lo siguiente pero no > funciona, ¿alguna sugerencia? > > > CREATE OR REPLACE FUNCTION fn_busca_almacen_por_criterio(in_criterio > character varying DEFAULT ''::character varying, in_valor character varying > DEFAULT ''::character varying) > RETURNS SETOF vw__almacen AS > $BODY$ > DECLARE in_criterio alias FOR $1; > in_valor alias FOR $2; > > DECLARE lr_ret RECORD; > BEGIN > FOR lr_ret IN > SELECT * > FROM vw__almacen > WHERE in_criterio LIKE CONCAT('%',in_valor,'%') > LOOP > RETURN NEXT lr_ret; > END LOOP; > END;$BODY$ > LANGUAGE plpgsql VOLATILE > COST 100 > ROWS 1000; > > Gracias desde ya. > > Saludos. > -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate EnterpriseDB Certified PostgreSQL 9.3 Associate