42485 ullman206 (2)

42485 ullman206 (2)



41$ 7. SYSTEMOWE ASPEKTY JĘZYKA SQI.

7.1.2. Interfejs między językiem SQL i językiem podstawowym

Przesyłanie danych między bazą danych, dostępną tylko z poziomu języka SQL, a programami podstawowymi odbywa się za pośrednictwem zmiennych z języka podstawowego, których wartości są odczytywane lub określane przez instrukcje systemu SQL. Imienne takie określa się jako dzielone. W instrukcjach SQL są one wyróżniane przez poprzedzenie nazwy dwukropkiem, w języku podstawowym ich nazwa nie jest natomiast odróżniana od innych nazw zmiennych.

Kod SQL, który' ma być osadzony w programie zapisanym w jeżyku podstawowym, poprzedza się słowem kluczowym EXEC SOL. Instrukcje, które następują po tym słowne, są zamieniane przez preprocesor na stosowne wywołania w języku podstawowym funkcji dostępnych w bibliotece SQL.

W standardzie SQL2 występuje specjalna zmienna SÓLSTATE, która służy' do łączenia programów' zapisanych w języku podstawowym z systemem przetwarzania SQL*. Zmienna SQlSTATE jest tablicą złożoną z pięciu znaków'. Za każdym razem, gdy wywołuje się jakąś funkcję biblioteczną SQL, do zmiennej SOLSTATF. zapisuje się kod oznaczający, czy i ewentualnie jakie problemy napotkano przy wykonywaniu instrukcji $QL. Na przykład kod ‘00000* (pięć zer) oznacza, że instrukcja SQL została przetworzona bez błędów, a z kolei kod ‘20000’ oznacza, że w wyniku przetwarzania zapytania SQL nic odnaleziono wskazanej w' nim krotki. W języku podstawowym można odczytywać wartość zmiennej SOLSTATF. i dzięki temu można uzależnić od jej wartości dalsze przetwarzanie.

7.1.3. Sekcja DECLARE

Deklaracje zmiennych dzielonych wyróżnia się w programie podstawowym przez poprzedzenie jej i zakończenie następującymi instrukcjami SQL:

EXEC SQL BEGIN DECLARE SECTICN;

EXEC SQL 2ND DECLARE SECTION;

Fragment kodu między tymi dwiema instrukcjami nazywa się sekcją deklaracji. Postać deklaracji w tej sekcji jest zgodna z konwencją deklaracji w języku podstawowym. Ponadto nie ma sensu deklarować zmiennych innych typów niż typy wspólne dla języka podstawowego i SQL, czyli innych niż na przykład real, integer lub character.

' Może się zdarzyć, zc systemy, które nie są zgodne zc standardem SQL2, nie zawierają zmiennej SOLATATE, ale należy oczekiwać, iz występuje w nich jakaś inna zmienna odgrywająca taką samą rolę.

PRZYKŁAD 7.1

W funkcji zapisanej w języku C, która służy do modyfikowania relacji Studio, może na przykład wystąpić następująca instrukcja:

EXEC SQL BEGIN DECLARE SECTION;

char nazwaStudia[15], adresStudia[50J; char SQLSTA7E[6];

EXEC SQL END DECLARE SECTION;

Instrukcje pierwsza oraz ostatnia są wymaganymi nawiasami sekcji deklaracji Wewnątrz sekcji występuje deklaracja dwóch zmiennych: nazwaStudic i adresStudia. Obie są zmiennymi znakowymi i, jak przekonamy się później służą do przechowywania nazwy oraz adresu studia, które połączone razcu tworzą krotkę wstawianą do relacji Studio. W trzeciej instrukcji została zdefi niowana zmienna SQLSTATE jako tablica o długości sześciu znaków *.

7.1.4. Stosowanie zmiennych dzielonych

W instrukcjach SQL zmienne dzielone występują w kontekstach prze znaczonych dla konkretnych wartości. Przypomnijmy tu, źe nazwy tyci zmiennych w instrukcjach SQL są poprzedzane dwukropkiem. Poniżej przed stawiamy przykład zastosowania zmiennych dzielonych zdefiniowanycł w' przykładzie 7.1 w instrukcji wstawiania nowej krotki do relacji Studio.

PRZYKŁAD 7.2

Na rysunku 7.2 został przedstawiony szkielet funkcji podaj Studio, któn służ>- do pobrania od użytkownika wartości atrybutów określających nazw* i adres studia filmowego oraz wstawienia nowej krotki do relacji Studio W wierszach od 1) do 4) umieszczono deklaracje analizowane w przykła dzie 7.1. Kod w języku C, który służy do interakcyjnego pobrania wartości d( tablic nazwaStudia i adresStudia, został pominięty.

W wierszach 5) i 6) zawarto osadzony w programie C kod instrukcji SQI służącej do wstawienia nowej krotki. Ta instrukcja insert została poprze dzona słowom kluczowym EXEC SQL, po to by było wiadomo, że jest on; osadzonym kodem języka SQL, a nic jest niepoprawnym kodem w języku C Dzięki temu ten fragment zostanie dostrzeżony przez preprocesor, który po kazano na rys. 7.1, i przetw orzony na właściwą sekwencję instrukcji.

Pięcioznakowa wartość zmiennej SQ1-STATE musi być przechowywana jako napi o długości sześciu znaków, ponieważ w programie przykładowym korzystamy z funkcji sircm przy porównywaniu napisów. Funkcja strernp natomiast korzysta zc standardowej konwencj kończenia napisu znakiem ‘\0\ a więc i wartość zmiennej SQLSTATK musi być w laki sposól zakończona. Wartość tego szóstego znaku trzeba początkowo ustawić jako ‘\0\ ale to przypisa nie nic wystąpi jawnie w naszym przykładzie.


Wyszukiwarka

Podobne podstrony:
17514 ullman224 (2) 454 7 SYSTEMOWE ASPEKTY JĘZYKA SQI.7.4. Bezpieczeństwo i autoryzacja użytkownika
47839 ullman216 (2) 438 7. SYSTEMOWE ASPEKTY JĘZYKA SQI. do. Wartości atrybutów określają więc numer
ullman219 (2) 444 7. SYSTEMOWI! ASPEKTY JĘZYKA SQI. Jak bardzo istotny jest fakt, że odczytano warto
33755 ullman226 (2) 458 7. SYSTEMOWE ASPEKTY JĘZYKA SQI. sesji, którą autoryzuje użytkownik stefan.
18974 ullman230 (2) 400 7. SYSTEMOWE ASPEKTY JĘZYKA SQL d)    Usuwanie z przykładu 5.
ullman208 (2) 422 7. SYSTEMOWE ASPEKTY JĘZYKA SQL PRZYKŁAD 7.3 Przedstawimy tu funkcję C. która służ
51873 ullman225 (2) 430 7. SYSTEMOWE ASPEKTY JĘZYKA SQL Po pierwsze należy wiedzieć, że wszystkie el

więcej podobnych podstron