Brasil Software escreveu:
> Brasil Software wrote:
>> Olá amigos tenho uma função que grava log do usuario, quando implementei 
>>        o fonte para grava os campos alterados da um erro naq seguinte 
>> linha.
>>
>> SQL02 = 'SELECT new.nome INTO valornovo';
>> EXECUTE SQL02;
> Não é permitido fazer um INTO dentro de um EXECUTE.

Existe uma sutileza aqui.
Realmente um
EXECUTE 'SELECT ... INTO' não é suportado mas um
EXECUTE 'SELECT ...' INTO é.
Reparem a posição do ' (isto é a string que está sendo executada), não 
é um SELECT INTO mas sim um EXECUTE '..' INTO.
Vejam:
http://www.postgresql.org/docs/8.3/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN


> Leia a mensagem de erro, ela deixa bem claro isso.
> Você poderia fazer isso que deseja sem jogar para uma string e
> executá-la ou da melhor forma: valornovo := new.nome;
> 
> Att
> 
> Evandro
> 
> Na verdade este fonte e dinamico "SQL02 = 'SELECT new.'|| campo || ' 
> INTO' valornovo'" para que todas as tabelas utilizem esta função.;
> 

Osvaldo

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a