Boa tarde, Euler,

Em 15 de fevereiro de 2010 18:33, Euler Taveira de Oliveira <
[email protected]> escreveu:

> Andre Fernandes escreveu:
>
> [Não precisa repetir a sua pergunta...]
>
> Desculpa-me.


> > ninguém tem algum exemplo de funções em linguagem C que execute SQLs
> > (com parâmetros) e depois trabalhe com os valores retornados?
> > Alguém já fez isso? A documentação quase só fala de triggers e não vi
> > muitos exemplos de uso de SQL nela.
> >
> Eu não entendi o que você quer fazer. Podes dar um exemplo? Algo como:
>
> Estou tentando converter uma external procedure em C escrita para Oracle
(ali usa Pro*C)
para rodar em postgreSQL.  A procedure do Oracle executa diversas queries
custosas (SELECTs) cujos resultados
serão armazenados em memória para serem usados mais tarde na mesma conexão
ao banco (chamados os valores usando
outras procedures em C).



> SELECT foo(a, b, 10) FROM bar WHERE x > 15;
>
> Você já leu as seções 34.9.8 a 34.9.11 em [1]? Talvez o que você queira é
> utilizar o SPI [2]. Sem mais detalhes fica difícil sugerir algo.
>
>

> [1] http://www.postgresql.org/docs/8.4/static/xfunc-c.html
> [2] http://www.postgresql.org/docs/8.4/static/spi.html
>
> Sim, eu olhei ambas as partes, e inclusive olhei os exemplos de uso de SPI
do contrib. Contudo,
quando tentei utilizar a função SPI_execute_with_args(), por exemplo, tive
dificuldade de descobrir
como fazer a chamada, não encontrei nenhum exemplo da função (como colocar
os parâmetros, onde indico onde na query ficarão os parâmetros,
por exemplo).

Eu preciso fazer diversos Selects no banco e guardar esses valores em
memória, aliás, na memória compartilhada daquela sessão do banco de dados,
para ser usada por outras chamadas (no caso outras procedures chamadas na
mesma sessão de conexão).
Por exemplo, digamos que eu quisesse fazer:

SELECT num_lock from documento where num_checagem = $0 and num_seq =
$1;                  (onde $0 e $1 seriam os parâmetros recebidos pela
procedure).


(Nota: esse select não é um select real da aplicação, mas o meu problema é
como fazer a chamada, depois disso fica fácil).
Nesse caso eu usaria na função a SPI_execute_with_args(), certo? Mas como
escreveria a SQL (qual a sintaxe para mostrar o local
dos argumentos na mesma)? E como passaria os OIDs para os tipos dos dados?

Por isso pedi exemplos de funções que façam queries, não achei nada
parecido.




>
> --
>  Euler Taveira de Oliveira
>  http://www.timbira.com/
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>


Obrigado,
-- 
André de Camargo Fernandes
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a