Partilhar via


Exemplo de SQL incorporado

O código seguinte é um simples programa SQL embutido, escrito em C. O programa ilustra muitas, mas não todas, as técnicas de SQL embutido. O programa pede ao utilizador um número de encomenda, recupera o número do cliente, o vendedor e o estado da encomenda, e mostra a informação recuperada no ecrã.

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();  
}  

Note o seguinte sobre este programa:

  • Variáveis hospedeiras As variáveis anfitriãs são declaradas numa secção incluída pelas palavras-chave BEGIN DECLARE SECTION e END DECLARE SECTION . Cada nome de variável anfitriã é precedido por dois pontos (:) quando aparece numa instrução SQL embutida. Os dois-pontos permitem distinguir, para o pré-compilador, entre variáveis de anfitrião e objetos da base de dados, como tabelas e colunas, que têm o mesmo nome.

  • Tipos de Dados Os tipos de dados suportados por um SGBD e por uma linguagem anfitriã podem ser bastante diferentes. Isto afeta as variáveis do hospedeiro porque desempenham um papel duplo. Por um lado, as variáveis host são variáveis de programa, declaradas e manipuladas por instruções em linguagem host. Por outro lado, são usados em instruções SQL embutidas para recuperar dados de bases de dados. Se não existir um tipo de linguagem anfitriã que corresponda a um tipo de dado SGBD, o SGBD converte automaticamente os dados. No entanto, como cada SGBD tem as suas próprias regras e idiossincrasias associadas ao processo de conversão, os tipos de variáveis anfitriãs devem ser escolhidos cuidadosamente.

  • Tratamento de Erros O SGBD reporta erros de execução ao programa de aplicações através de uma Área de Comunicações SQL, ou SQLCA. No exemplo de código anterior, a primeira instrução SQL embutida é INCLUIR SQLCA. Isto instrui o pré-compilador a incluir a estrutura SQLCA no programa. Isto é necessário sempre que o programa processar erros devolvidos pelo SGBD. O SEMPRE QUE... A instrução GOTO diz ao pré-compilador para gerar código de tratamento de erros que se ramifica para um rótulo específico quando ocorre um erro.

  • Singleton SELECT A instrução usada para devolver os dados é uma instrução singleton SELECT; ou seja, devolve apenas uma única linha de dados. Portanto, o exemplo de código não declara nem usa cursores.