icjunior07 wrote:
> Fala galera, blz?
>
>
> Estou modificando uma funcao que eu tenho em meu banco , e preciso colocar
> uma variavel que ira receber um
> resultado de select no qual o select tb tem variaveis.
> Mas ao executar a funcao, esta gerando erros das variaveis.
>
> Esta seria a variavel:
>
> tentei desta forma:
>
> contagem_finalizada := 'select count(*) from '||var_mes||' where
> majcajus=''11'' and majddaju='''||vdata||'''';
>
Apenas uma dica, utilize o quote_literal para evitar tantos apostrofes,
fica menos poluido o codigo.
EX: .... majddaju=' || quote_literal(vdata) || ' ....
> EXECUTE 'SELECT COUNT(*) INTO '||contagem_finalizada||' FROM '||var_mes||'
> WHERE majcajus=''11'' and majddaju=
> '||vdata;
>
Deixa eu ver se entendi, você está querendo pegar o valor do count(*) e
jogar na variavel contagem_finalizada.
Até aonde eu saiba (não sei se já foi implementado em novas versões),
não é possível utilizar um INTO dentro um EXECUTE, assim essa rotina sua
nunca irá funcionar, como está fazendo.
Quando caiu nessa situação, utilizo um FOR para carregar o resultado da
consulta em um cursor e dentro do FOR pego o resultado da consulta.
Utilize a primeira construção que você enviou e atribua a uma variavel
do tipo varchar.
Faça assim:
vSql :='select count(*) as resultado from '||var_mes||' where
majcajus=''11'' and majddaju=' || quote_literal(vdata);
FOR record IN EXECUTE vSql LOOP
contagem_finalizada := record.resultado;
END LOOP;
Como é um count, o FOR terá apenas 1 loop.
Parece 'adaptação técnica', mas não sei se existe outra forma de fazer.
PS: sempre coloque a mensagem de erro que está obtendo para ajudar na
solução do problema.
Att
Evandro
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral