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

Responder a