29.11. Processamento dos programas com SQL incorporado

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

SourceForge.net Logo CSS válido!