Herman Estaban escribió:

> Tengo una tabla PRD_REG con 02 campos:
> 
> ID_TIP_REG INTEGER
> NOM_TIP_REG VARCHAR(25)
> 
> Esta tabla tiene 14 registros y esta registrado asi:
> 
> ID_TIP_REG  |  NOM_TIP_REG
> 1                   | DETALLADO
> 2                   | MARCADO
> 3                   | PROGRAMADO
> 4                   | CON DISEÑO
> 5                   | SIN DISEÑO
> .
> .
> .
> 99                 | SIN REGISTRAR
> 
> He creado un funcion, que tiene un parametro (param) de tipo INTEGER, en
> esta funcion la que esta tabla PRD_REG se cruza con JOIN con otra tabla y
> en el WHERE quiero usar un LIKE ya que el usuario puede elegir cualquiera
> de los codigos de la tabla PRD_REG, como tambien todos por eso necesito el
> LIKE.
> 
> Por eso utilizo esto:
> WHERE CAST(ID_TIP_REG AS CHAR) LIKE param;

Suena a mal diseño de la función.

consulta := 'select bla bla from prd_reg '
if param IS NOT NULL then 
   consulta := consulta || 'where id_tip_reg = ' || param
end if;
execute consulta;

Así, si le pasas un NULL a param significa "todos", pero si es un valor
específico entonces trae los registros de ese código.

Alternativamente, si quieres varios códigos, podrías usar = ANY,
  select .. from prd_reg where id_tip_reg = any (1, 4, 6)

-- 
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a