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
