Sdílet prostřednictvím


Příklad vloženého SQL

Následující kód je jednoduchý vložený program SQL napsaný v jazyce C. Program ukazuje mnoho, ale ne všechny vložené techniky SQL. Program vyzve uživatele k zadání čísla objednávky, načte číslo zákazníka, prodejce a stav objednávky a zobrazí načtené informace na obrazovce.

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

Poznamenejte si následující informace o tomto programu:

  • Proměnné hostitele Proměnné hostitele jsou deklarovány v oddílu uzavřeném klíčovými slovy BEGIN DECLARE SECTION a END DECLARE SECTION . Každý název proměnné hostitele má předponu dvojtečky (:), když se zobrazí v vloženém příkazu SQL. Dvojtečka umožňuje předkompilátoru rozlišovat mezi hostitelskými proměnnými a databázovými objekty, jako jsou tabulky a sloupce, které mají stejný název.

  • Datové typy Datové typy podporované DBMS a hostitelským jazykem můžou být poměrně odlišné. To má vliv na proměnné hostitele, protože hrají duální roli. Proměnné hostitele jsou programové proměnné, které jsou deklarovány a manipulovány příkazy jazyka hostitele. Na druhou stranu se používají ve vložených příkazech SQL k načtení databázových dat. Pokud neexistuje žádný typ jazyka hostitele, který odpovídá datovému typu DBMS, dbMS data automaticky převede. Vzhledem k tomu, že každá dbMS má vlastní pravidla a idiosyncrasy spojené s procesem převodu, je nutné pečlivě zvolit typy proměnných hostitele.

  • Zpracování chyb DBMS hlásí aplikačnímu programu chyby během běhu programu prostřednictvím komunikační oblasti SQL, nebo SQLCA. V předchozím příkladu kódu je prvním vloženým příkazem SQL INCLUDE SQLCA. To říká prekompileru, aby do programu zahrnul strukturu SQLCA. To se vyžaduje vždy, když program zpracuje chyby vrácené DBMS. Příkaz WHENEVER...GOTO říká prekompileru, aby vygeneroval kód pro zpracování chyb, který se při výskytu chyby větví na konkrétní štítek.

  • Singleton SELECT Příkaz použitý k vrácení dat je singleton SELECT příkaz; to znamená, že vrátí pouze jeden řádek dat. Proto příklad kódu deklaruje nebo nepoužívá kurzory.