Documentação do PostgreSQL 8.0.0 | ||||
---|---|---|---|---|
Anterior | Início | Capítulo 29. ECPG - SQL incorporado à linguagem C | Fim | Próxima |
Agora que já se tem uma idéia de como se escreve programas C com SQL incorporado, deseja-se saber como fazer para compilar estes programas. Antes de ser compilado, o programa é submetido ao pré-processador C de SQL incorporado, que converte as declarações SQL utilizadas em chamadas a funções especiais. Após a compilação, deve ser feita a ligação com uma biblioteca especial que contém as funções necessárias. Estas funções pegam informações dos argumentos, executam o comando SQL utilizando a interface libpq, e colocam o resultado nos argumentos especificados para saída.
O programa pré-processador chama-se ecpg, estando incluído na instalação normal do PostgreSQL. Os programas com SQL incorporado recebem tipicamente a extensão .pgc. Se houver um arquivo de programa chamado prog1.pgc este pode ser pré-processado chamando simplesmente:
ecpg prog1.pgc
Este comando cria um arquivo chamado prog1.c. Se os arquivos de entrada não seguirem o padrão de nomes sugerido, o nome do arquivo de saída pode ser especificado explicitamente utilizando a opção -o.
O arquivo pré-processado pode ser compilado normalmente. Por exemplo:
cc -c prog1.c
Os arquivos fontes C incluem arquivos de cabeçalho da instalação do PostgreSQL. Portanto, se o PostgreSQL estiver instalado em um local que não é procurado por padrão, é necessário adicionar opções como -I/usr/local/pgsql/include à linha de comando de compilação.
Para ligar o programa com SQL incorporado é necessário incluir a biblioteca libecpg, como:
cc -o myprog prog1.o prog2.o ... -lecpg
Novamente, pode ser necessário adicionar uma opção do tipo -L/usr/local/pgsql/lib à linha de comando.
Se o processo de construção de um projeto grande for gerenciado pelo make, pode ser conveniente incluir as seguintes regras implícitas nos arquivos de construção:
ECPG = ecpg %.c: %.pgc $(ECPG) $<
A sintaxe completa do comando ecpg está descrita na ecpg.
A biblioteca ecpg é segura quanto a thread se for construída utilizando a opção de linha de comando --enable-thread-safety no configure (Pode ser necessário utilizar outras opções de linha de comando para thread para compilar o código cliente).