Obrigado.
Vou fazer uns testes aqui usando conexão então e gerando executável. É que 
estava querendo executar comandos sem precisar conectar novamente no banco, 
por já está conectado, quando utilizo esta função chamando dentro de uma 
conexão já estabelecida no banco de dados.

Valeu patrão, pela atenção.


----- Original Message ----- 
From: "Euler Taveira de Oliveira" <[email protected]>
To: "Comunidade PostgreSQL Brasileira" <[email protected]>
Sent: Friday, May 08, 2009 7:48 PM
Subject: Re: [pgbr-geral] Função em C no PostgreSQL


Anderson escreveu:
> Alguém sabe me dizer o porque deste erro na hora de criar uma função no
> banco de dados usando uma função feita em C.
>
Porque *não* é assim que cria funções em C no PostgreSQL. Vide exemplos em 
[1].

> Erro:
>
> ERROR: could not load library "/usr/local/pgsql/lib/teste.so":
> /usr/local/pgsql/lib/teste.so: undefined symbol: ECPGdo
> SQL state: 58P01
> Estou utilizando o PostgreSQL 8.2.6 com o Ubuntu 9.04. Já tentei também
> no PostgreSQL 8.3.6, o erro é o mesmo.
>
O ECPG [2] é uma linguagem para utilização de SQL embutido em um programa C.
Abaixo eu ilustro um exemplo bem simples:

eu...@harman ~ $ cat /tmp/t1.pgc
#include <stdio.h>

int main(void)
{
ECPGdebug(1, stderr);

exec sql connect to eu...@localhost:5433;
exec sql create table foo (a int, b int);
exec sql select * from foo;
exec sql drop table foo;
exec sql disconnect;

return 0;
}
eu...@harman ~ $ ./install/bin/ecpg /tmp/t1.pgc
eu...@harman ~ $ gcc -o /tmp/t1 -I./install/include /tmp/t1.c -lecpg
eu...@harman ~ $ /tmp/t1
[8263]: ECPGdebug: set to 1
[8263]: ECPGconnect: opening database euler on localhost port 5433
[8263]: ecpg_execute line 8: QUERY: create table foo ( a int , b int ) with 
0
parameter on connection euler
[8263]: ecpg_execute line 8: using PQexec
[8263]: ecpg_execute line 8 Ok: CREATE TABLE
[8263]: ecpg_execute line 9: QUERY: select * from foo with 0 parameter on
connection euler
[8263]: ecpg_execute line 9: using PQexec
[8263]: ecpg_execute line 9: Correctly got 0 tuples with 2 fields
[8263]: raising sqlcode 100 in line 9, 'No data found in line 9.'.
[8263]: ecpg_execute line 10: QUERY: drop table foo with 0 parameter on
connection euler
[8263]: ecpg_execute line 10: using PQexec
[8263]: ecpg_execute line 10 Ok: DROP TABLE
[8263]: ecpg_finish: Connection euler closed.


[1] http://www.postgresql.org/docs/8.3/static/xfunc-c.html
[2] http://www.postgresql.org/docs/8.3/static/ecpg.html


-- 
  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 

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a