Megosztás:


Beágyazott SQL-példa

Az alábbi kód egy egyszerű beágyazott SQL-program, amely C nyelven íródott. A program sok, de nem az összes beágyazott SQL-technikát szemlélteti. A program kéri a felhasználót egy rendelésszám megadására, lekéri a vevőszámot, az értékesítőt és a rendelés állapotát, és megjeleníti a beolvasott adatokat a képernyőn.

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

Jegyezze fel a következőket a programról:

  • Gazdagépváltozók A gazdagépváltozók deklarálása a BEGIN DEKLARÁLT SZAKASZ és a ZÁRÓ DEKLARÁLT SZAKASZ kulcsszavak által körülvett szakaszban van. Minden gazdagépváltozó neve előtagként egy kettősponttal (:) szerepel, amikor beágyazott SQL-utasításban jelenik meg. A kettőspont lehetővé teszi, hogy az előfordító különbséget tegyen az azonos nevű hoszt változók és adatbázis-objektumok, például táblák és oszlopok között.

  • Adattípusok A DBMS és a gazdanyelv által támogatott adattípusok meglehetősen eltérőek lehetnek. Ez a gazdagépváltozókra azért van hatással, mert kettős szerepet játszanak. A gazdagépváltozók egyrészt programváltozók, amelyeket gazdanyelvi utasítások deklarálnak és módosítanak. Másrészt beágyazott SQL-utasításokban használják őket az adatbázisadatok lekéréséhez. Ha nincs olyan gazdagépnyelv-típus, amely megfelel egy DBMS-adattípusnak, a DBMS automatikusan konvertálja az adatokat. Mivel azonban minden DBMS saját szabályokkal és sajátosságokkal rendelkezik az átalakítási folyamathoz, a gazdagép változótípusokat gondosan kell kiválasztani.

  • Hibakezelés A DBMS futásidejű hibákat jelent az alkalmazásprogramnak egy SQL Communications Area-en vagy SQLCA-on keresztül. Az előző kód példában az első beágyazott SQL-utasítás az INCLUDE SQLCA. Ez azt jelzi az előfordítónak, hogy az SQLCA-struktúrát belefoglalja a programba. Erre akkor van szükség, ha a program feldolgozni fogja a DBMS által visszaadott hibákat. AHÁNYSZOR... A GOTO utasítás arra utasítja az előkészítőt, hogy hozzon létre egy hibakezelési kódot, amely hiba esetén egy adott címkére ágazik.

  • Singleton SELECT Az adatok visszaadására használt utasítás egy egyszeri SELECT utasítás; vagyis csak egyetlen adatsort ad vissza. Ezért a példakód nem deklarál vagy használ kurzorokat.