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

>
>> 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
>>
>>
> Funcionou.
>

Nem precisa de SQL Dinâmico para isso. Fica mais performático usando
parâmetros:

http://www.postgresql.org/docs/9.2/static/plpgsql-cursors.html#PLPGSQL-CURSOR-DECLARATIONS

Você só vai precisar de SQL dinâmico se o nome de uma das colunas, tabelas,
etc for dinâmico. Para passar um simples parâmetro não.

[]s
-- 
Atenciosamente,
Fábio Telles Rodriguez
blog: http:// <http://www.midstorm.org/~telles/>http://tellesr.wordpress.com
e-mail / gtalk / MSN: [email protected]
Skype: fabio_telles
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a