O método conhecido como Embedded
SQL (ou SQL embutido) é definido pelo ANSI (American National Standards Institute) e define um conjunto de padrões para que código SQL possa ser usado a partir de programas feitos em outras linguagens de programação, que no nosso caso será o C.
A implementação do
PostgreSQL para este conceito é chamado de
ECPG. Todo o código SQL contido no programa em C é pré-processado antes por um pré-processador do PostgreSQL, que irá fazer a tradução para código C comum, para então ser compilado por um compilador C.
Este método tem algumas vantagens com relação a outros métodos, comparando aqui com a libpq, entre elas:
- O gerenciamento de variáveis que irão receber valores retornados por queries é muito mais fácil do que na libpq.
- Toda sintaxe do SQL é verificada, o que permite que erros desse tipo sejam corrigidos antes de o programa ser de fato compilado.
- O embedded SQL é definido pelo padrão ANSI, e como o PostgreSQL segue o mais próximo o possível estes padrões, é muito mais fácil portar estes programas para outros bancos de dados.
E claro, nem tudo é vantagem. Entre as desvantagens deste método podemos citar:
- A depuração do programa pode ser mais complicada, pois o arquivo é pré-processado antes de o compilador C entrar em ação, ou seja, erros do compilador podem ser mais difíceis de encontrar.
- Deve-se saber antecipadamente a estrutura das tabelas quando for usar comandos SELECT.
Claro, nada é perfeito, e em todas as situações deve ser analisado qual a melhor solução a ser usada.