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
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a