Az SQR programozási nyelv

Adatbázis-kezelés és lekérdezések használata SQR programokban

Az SQR programok szerves részét képezik a programokban használt lekérdezések és DML utasítások használata. Egy SQR program a futása során egy adatbáziskezelővel áll kapcsolatban, így a programból kényelmesen használhatunk SQL és DML utasításokat. Ezen utasítások ellenőrzésére már sok esetben fordítási időben sor kerül, hiszen preparedstatement-ként kerülnek átküldésre az adatbáziskezelő felé. Ezt követően futási időben már csak adatkonverziós hibák fordulhatnak elő. Adatbáziskezelést a következő programstruktúrákban írhatunk:

Select szekció

SELECT szekció jellegzetessége, hogy ötvözi az SQL lekérdezéseket az SQR feldolgozással. A SELECT szekció Begin-Select utasítással kezdődik és End-Select utasítással ér véget. A lekérdezésben szereplő oszlopok nevei kötelezően a sor elején kezdődnek és közöttük nem kell kirakni elválasztójelet!

select szekció

A fenti kifejezés jelentése: Minden A kezdőbetűvel kezdődő személy adatait lekérdezzük: azonosítóját, nevét, városát és címét. Az egyes eredménysorok feldolgozását a Print_Row eljárásban végezzük el. A fenti példában nem adtunk meg változóneveket, így ebben az esetben az eredménysorok mezőinek az SQR autoatikus változónevet biztosít, mégpedig az oszlop nevével megyező szignatúrájút: így &Emplid, &Name, &City és &State. A következő ábrából leolvasható a szekció működése:
select szekció használata

Az SQR nyelvi utasítások a SELECT szekcióban minden esetben a Begin-Select és From kitüntetett utasítások közé kell tenni. A FROM ebben az esetben magának az SQL utasításnak is a része.

Példa egy kevert SQL és SQR utasítássorokra (látható, hogy az SQL mezőinek nevei az sor első pozícióján kezdődnek.

Begin-Select
Emplid
Move &Emplid to $Emplid
Show ’Emplid: ’ $Emplid
Name
Show ’Name: ’ &Name
City
Do Print_Row
From Personal_Data
Where State = ’NY’
End-Select

Saját magunk is definiálhatjuk a visszaadott mezők változóneveit. Erre leggyakrabban akkor van szükség, ha több táblából dolgozunk és minősített oszlopnevet használunk a lekérdezéseinkben.

Pl.:

Begin-Select
A.Emplid &Emplid
A.Name &PersonalName
B.Date &Date
B.Name &EmplName
Do Print_Row
From
Personal_Data A, Employee B
Where
A.Emplid = B.Emplid
End-Select

Load-lookup és lookup parancsok használata

A Load-Lookup parancs segítségével hatékony előre definiált lekérdezést hajthatunk végre. Az eredménye más egy olyan kétdimenziós tömb lesz amely kulcs-érték párok halmazát állítja elő. Segítségével az eredménysorok között könnyen kiválaszthatjuk a számunkra lényeges eredményeket.

Pl.:

Load-lookup és lookup parancsok

A fenti példában látható a Load-Lookup és Lookup parancsok működése. A program kezdetén betöltődik a memóriába a Company_Names tömb, amely kulcs-érték párokként tartalmazza a vállalat – leírás összerendeléseket. A feltöltött tömbből a az egyes alkalmazottak beosztása alapján kiválasztható melyik vállalatban dolgoznak.

DML utasítások használata SQR nyelvben

DML utasítások használatát az SQL nyelvben a Beigin-Sql és End-Sql utasítások között írhatunk. Az egyes DML utasításokat akár egy blokkban ’;’-vel elválasztva írhatunk.

Pl.:

DML utasítás

A fenti példában látható az SQR nyelvben használható igencsak egyszerű kivételkezelő mechanizmus. Error esemény bekövetkezésekor a program abortálása helyett egy kivételkezelő blokk a Db_Error eljárás fog végrehajtódni. Mivel ilen jellegű kivételkezelés csak ennél a blokknál támogatott, ezért a hiba jelzését egy foglalt változóba írja a rendszer: SQL-Error: $sql-error, Error number: #sql-status. Nyilvánvalóan az adatbáziskezelő által töltött hibajegyet tölti a két érintett változóba.