Este capítulo descreve o pacote de SQL incorporado para o PostgreSQL. Foi escrito por Linus Tolke (<linus@epact.se> ) e Michael Meskes (<meskes@postgresql.org> ). Originalmente escrito para trabalhar com a linguagem C, também trabalha com a linguagem C++, mas ainda não reconhece todas as construções de C++.
Esta documentação é bastante incompleta, mas uma vez que a interface é padronizada, podem ser encontradas informações adicionais em várias fontes sobre SQL.
Um programa com SQL incorporado consiste de código escrito em uma linguagem de programação comum, neste caso a linguagem C, misturado com comandos SQL em seções com marcas especiais. Para construir o programa, primeiro o código fonte é passado através de um pré-processador de SQL incorporado, que converte este código em um programa C comum. Após isto ser feito, o código pode ser processado pelo compilador C.
O SQL incorporado possui vantagens sobre outros métodos que tratam comandos SQL a partir do código C: Em primeiro lugar, toma conta da entediante passagem de informação de e para as variáveis do programa escrito em C; Em segundo lugar, o código SQL incorporado ao programa é verificado quanto à correção sintática em tempo de construção; Em terceiro lugar, o SQL incorporado à linguagem C é especificado pelo padrão SQL, e suportado por muitos outros sistemas gerenciadores de banco de dados SQL.
A implementação do PostgreSQL foi projetada para corresponder ao padrão tanto quanto o possível. Geralmente é possível portar para o PostgreSQL, com relativa facilidade, programas com SQL incorporado escritos para outros gerenciadores de banco de dados SQL.
Como já foi dito, os programas escritos para a interface de SQL incorporado são programas C normais, com código especial inserido para realizar ações relacionadas com o banco de dados. Este código especial sempre possui a forma:
EXEC SQL ...;
Sintaticamente estas declarações tomam o lugar da declaração C. Dependendo da declaração em particular, pode aparecer no nível global ou dentro de uma função. As declarações SQL incorporadas seguem as regras de tratamento de letras maiúsculas e minúsculas do código SQL normal, e não as regras da linguagem C.
As seções que se seguem explicam todas as declarações SQL incorporadas.