Em 14 de setembro de 2012 00:01, Pedro B. Alves
<[email protected]>escreveu:

> Pessoal como que eu faço para resolver a seguinte situação:
>
> r_lista RECORD;
>
> BEGIN
>
>   FOR r_lista IN ( select codigo, nome from tcliente where ativo =  1 and
> empresa = $1) LOOP
> .
> .
> .
> .
>  END LOOP;
>
>
>
> END;
>
>
> nesta função vou ter 1 parametro que é a empresa.
>
> Só que como posso fazer pra quando quero todas as empresa?
>
> o SELECT deveria ficar assim:
>
> select codigo, nome from tclientes where ativo = 1
>
>
Ok... presumindo que vc queira que sejam *todas as empresas* quando o "$1
IS NULL", ou seja, o primeiro parâmetro seja nulo, então vc pode fazer o
seguinte:


r_lista RECORD;
t_sql TEXT;

BEGIN

  t_sql := 'SELECT codigo, nome FROM tcliente WHERE ativo = 1';
  t_sql := t_sql || COALESCE(' AND empresa = ' || $1, '');

  FOR r_lista IN EXECUTE t_sql LOOP
.
.
.
.
 END LOOP;

Att,

-- 
Fabrízio de Royes Mello
Consultoria/Coaching PostgreSQL
>> Blog sobre TI: http://fabriziomello.blogspot.com
>> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
>> Twitter: http://twitter.com/fabriziomello
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a