Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Poniższy kod to prosty osadzony program SQL napisany w języku C. Program ilustruje wiele, ale nie wszystkich, osadzonych technik SQL. Program wyświetla monit o podanie numeru zamówienia, pobiera numer klienta, sprzedawca i stan zamówienia oraz wyświetla pobrane informacje na ekranie.
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();
}
Zwróć uwagę na następujące kwestie dotyczące tego programu:
Zmienne hosta Zmienne hosta są deklarowane w sekcji ujętej w słowa kluczowe BEGIN DECLARE SECTION i END DECLARE SECTION . Każda nazwa zmiennej hosta jest poprzedzona dwukropkiem (:), gdy jest wyświetlana w osadzonej instrukcji SQL. Dwukropek umożliwia prekompilerowi rozróżnienie między zmiennymi hosta i obiektami bazy danych, takimi jak tabele i kolumny, które mają taką samą nazwę.
Typy danych Typy danych obsługiwane przez system DBMS i język hosta mogą być zupełnie inne. Ma to wpływ na zmienne hosta, ponieważ odgrywają one podwójną rolę. Z jednej strony zmienne hosta to zmienne programowe, zadeklarowane i manipulowane przez instrukcje języka hosta. Z drugiej strony są one używane w osadzonych instrukcjach SQL do pobierania danych bazy danych. Jeśli nie ma typu języka hosta odpowiadającego typowi danych DBMS, usługa DBMS automatycznie konwertuje dane. Jednak ze względu na to, że każdy system DBMS ma własne reguły i idiosyncrasy skojarzone z procesem konwersji, należy starannie wybrać typy zmiennych hosta.
Obsługa błędów DBMS zgłasza błędy czasu wykonywania do programu aplikacyjnego, za pośrednictwem obszaru komunikacji SQL lub SQLCA. W poprzednim przykładzie kodu pierwsza osadzona instrukcja SQL to INCLUDE SQLCA. Spowoduje to, że prekompiler uwzględni strukturę SQLCA w programie. Jest to wymagane za każdym razem, gdy program będzie przetwarzać błędy zwracane przez system DBMS. Konstrukcja WHENEVER...GOTO instruuje prekompilator, aby generował kod obsługi błędów, który rozgałęzia się do określonej etykiety w razie wystąpienia błędu.
Singleton SELECT Instrukcja używana do zwracania danych jest pojedynczą instrukcją SELECT; oznacza to, że zwraca tylko jeden wiersz danych. W związku z tym przykład kodu nie deklaruje ani nie używa kursorów.