Dela via


Inbäddat SQL-exempel

Följande kod är ett enkelt inbäddat SQL-program som skrivits i C. Programmet illustrerar många, men inte alla, av de inbäddade SQL-teknikerna. Programmet uppmanar användaren att ange ett ordernummer, hämtar kundnummer, säljare och status för ordern och visar den hämtade informationen på skärmen.

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

Observera följande om det här programmet:

  • Värdvariabler Värdvariablerna deklareras i ett avsnitt som omges av nyckelorden BEGIN DECLARE SECTION och END DECLARE SECTION . Varje värdvariabelnamn prefixeras av ett kolon (:) när det visas i en inbäddad SQL-instruktion. Med kolonet kan förkompileraren skilja mellan värdvariabler och databasobjekt, till exempel tabeller och kolumner, som har samma namn.

  • Datatyper De datatyper som stöds av en DBMS och ett värdspråk kan vara helt olika. Detta påverkar värdvariabler eftersom de spelar en dubbel roll. Å ena sidan är värdvariabler programvariabler, deklarerade och manipulerade av värdspråkinstruktioner. Å andra sidan används de i inbäddade SQL-instruktioner för att hämta databasdata. Om det inte finns någon värdspråkstyp som motsvarar en DBMS-datatyp konverterar DBMS automatiskt data. Men eftersom varje DBMS har egna regler och idiosynkraser som är associerade med konverteringsprocessen måste värdvariabeltyperna väljas noggrant.

  • Felhantering DBMS rapporterar körningsfel till programprogrammet via ett SQL Communications Area eller SQLCA. I föregående kodexempel är den första inbäddade SQL-instruktionen INCLUDE SQLCA. Detta talar om för förkompileraren att inkludera SQLCA-strukturen i programmet. Detta krävs när programmet bearbetar fel som returneras av DBMS. NÄR... GOTO-instruktionen instruerar förkompileraren att generera felhanteringskod som förgrenas till en specifik etikett när ett fel inträffar.

  • Singleton SELECT Instruktionen som används för att returnera data är en singleton SELECT-instruktion. Det vill: den returnerar bara en enda rad med data. Kodexemplet deklarerar eller använder därför inte markörer.