Exemplo de SQL inserido
O código a seguir é um programa SQL incorporado simples, escrito em C. O programa ilustra muitas das técnicas SQL incorporadas, mas não todas elas. O programa solicita ao usuário um número de ordem, recupera o número do cliente, o vendedor e o status da ordem e exibe as informações recuperadas na tela.
int main() {
EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
int OrderID; /* Employee ID (from user) */
int CustID; /* Retrieved customer ID */
char SalesPerson[10] /* Retrieved salesperson name */
char Status[6] /* Retrieved order status */
EXEC SQL END DECLARE SECTION;
/* Set up error processing */
EXEC SQL WHENEVER SQLERROR GOTO query_error;
EXEC SQL WHENEVER NOT FOUND GOTO bad_number;
/* Prompt the user for order number */
printf ("Enter order number: ");
scanf_s("%d", &OrderID);
/* Execute the SQL query */
EXEC SQL SELECT CustID, SalesPerson, Status
FROM Orders
WHERE OrderID = :OrderID
INTO :CustID, :SalesPerson, :Status;
/* Display the results */
printf ("Customer number: %d\n", CustID);
printf ("Salesperson: %s\n", SalesPerson);
printf ("Status: %s\n", Status);
exit();
query_error:
printf ("SQL error: %ld\n", sqlca->sqlcode);
exit();
bad_number:
printf ("Invalid order number.\n");
exit();
}
Observe o seguinte sobre este programa:
Variáveis de host As variáveis de host são declaradas em uma seção delimitada pelas palavras-chave BEGIN DECLARE SECTION e END DECLARE SECTION. Cada nome de variável de host é prefixado por dois pontos (:) quando é exibido em uma instrução SQL incorporada. Os dois pontos permitem que o pré-compilador diferencie variáveis de host e objetos de banco de dados, como tabelas e colunas, que têm o mesmo nome.
Tipos de dados Os tipos de dados com suporte pelo DBMS e por uma linguagem host podem ser bem diferentes. Isso afeta as variáveis do host, pois elas desempenham uma função dupla. Por um lado, variáveis de host são variáveis de programa, declaradas e manipuladas por instruções da linguagem host. Por outro lado, são usadas em instruções SQL incorporadas para recuperar dados do banco de dados. Se não houver nenhum tipo de linguagem host que corresponda a um tipo de dados DBMS, o DBMS converterá automaticamente os dados. No entanto, como cada DBMS tem suas próprias regras e idiossincrasias associadas ao processo de conversão, os tipos de variáveis de host devem ser escolhidos com cuidado.
Tratamento de erros O DBMS relata erros de tempo de execução para o programa de aplicativos por meio de uma Área de Comunicações SQL, ou SQLCA. No exemplo de código anterior, a primeira instrução SQL incorporada é INCLUDE SQLCA. Isso instrui o pré-compilador a incluir a estrutura SQLCA no programa. Isso é necessário sempre que o programa processa erros retornados pelo DBMS. A instrução WHENEVER...GOTO instrui o pré-compilador a gerar código de tratamento de erros que é ramificado para um rótulo específico quando ocorre um erro.
Singleton SELECT A instrução usada para retornar os dados é uma instrução SELECT singleton; ou seja, só retorna uma única linha de dados. Portanto, o exemplo de código não declara nem usa cursores.