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
