Obrigado pela indicação na doc Fabrízio e pelo exemplo André.

Li e consegui implementar da forma que queria, estou curtindo muito
essa parte de programação pro banco, vou continuar com a doc pra me
aprofundar no assunto.

Desculpem a demora (correria infernal nessas 2 semanas) mas não
poderia deixar de retornar o email com meu agradecimento.

Abraços.

--
Fernando França
linux user #263682

gtalk: furansa
skype: fernando_desconstruindo

http://desconstruindo.eng.br
http://www.cbpf.br/~lsd
http://www.rnp.br/keyserver/pks/lookup?search=0xB5E21164

Por favor considere o meio ambiente antes de imprimir esta mensagem.
S'il vous plaît à l'environnement avant d'imprimer ce message.
Please consider the environment before printing this message.



2009/5/4 André Pignata <[email protected]>:
> Tente desta maneira:
>
> CREATE OR REPLACE FUNCTION atualiza_convenios(tabela_
> origem character,
> inum_convenio integer, ccod_proposta character) RETURNS boolean AS
> $atualiza_convenios$
> BEGIN
>   EXECUTE('UPDATE '||tabela_origem||' SET pad = FALSE WHERE pad IS NULL AND
> num_convenio = '||inum_convenio::text||' AND CAST(cod_proposta AS CHAR(11))
> = '''||ccod_proposta||'''');
>
>   RETURN TRUE;
> END;
> $atualiza_convenios$ LANGUAGE plpgsql;
>
>
> 2009/5/4 Fernando França <[email protected]>
>>
>> Pessoal,
>>
>> Alguém já teve necessidade de atualizar uma tabela sem saber seu nome?
>> Ou seja, passando esse nome como parâmetro na função que executa a
>> atualização?
>>
>> Estou com esse problema, onde preciso fazer exatamente o que descrevi
>> acima e meu código está da seguinte forma:
>>
>> CREATE OR REPLACE FUNCTION atualiza_convenios(tabela_origem character,
>> inum_convenio integer, ccod_proposta character) RETURNS boolean AS
>> $atualiza_convenios$
>> BEGIN
>>   UPDATE tabela_origem SET pad = FALSE WHERE pad IS NULL AND
>> num_convenio = inum_convenio AND CAST(cod_proposta AS CHAR(11)) =
>> ccod_proposta;
>>
>>   RETURN TRUE;
>> END;
>> $atualiza_convenios$ LANGUAGE plpgsql;
>>
>> Quando tento criar essa função, recebo o seguinte erro:
>>
>> ERROR:  syntax error at or near "$1"
>> LINE 1: UPDATE  $1  SET pad = FALSE WHERE pad IS NULL AND num_conven...
>>                ^
>> QUERY:  UPDATE  $1  SET pad = FALSE WHERE pad IS NULL AND num_convenio
>> =  $2  AND CAST(cod_proposta AS CHAR(11)) =  $3
>> CONTEXT:  SQL statement in PL/PgSQL function "atualiza_convenios" near
>> line 8
>>
>> Ou seja, justamente no parâmetro que diz respeito à tabela a ser
>> atualizada, que seria meu $1.
>>
>> Claro que já tentei tirar isso, deixando o nome da tabela a ser
>> atualizada com o comando UPDATE definido e aí funciona, mas como
>> disse, essa função visa atender 2 tabelas de estruturas idênticas mas
>> nomes diferentes. Então queria usar essa forma dinâmica para chamar:
>> SELECT atualiza_convenios(tabelaX, num, cod);
>>
>> Se alguém já teve experiência e puder me dar uma ajuda já agradeço.
>>
>> Abraço a todos e obrigado.
>>
>> --
>> Fernando França
>> linux user #263682
>>
>> skype: fernando_desconstruindo
>>
>> http://desconstruindo.eng.br
>> http://www.cbpf.br/~lsd
>> http://www.rnp.br/keyserver/pks/lookup?search=0xB5E21164
>>
>> Por favor considere o meio ambiente antes de imprimir esta mensagem.
>> S'il vous plaît à l'environnement avant d'imprimer ce message.
>> Please consider the environment before printing this message.
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
>
> --
> André Luiz Martins Pignata
> Integral Convênios Odontológicos
> Gerente de TI
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a