Az SQR nyelvben 3 adatelemet használhatunk: oszlopok, literálok és változók. Minden nyelvi elemet egy speciális karakter vezet be.
Oszlopok
Az oszlopok az adatbázisban található táblák mezőinek definiálását teszik lehetővé a forráskódban. Az oszlopok, vagy adatbázis kifejezések tárolásához & jellel kell bevezetni az azonosítót. Értéke az adatbázis kezelőben használt típusok értékeit vehetik fel. SQR gondoskodik a típusok hozzárendeléséről, amelyet az adatbázis mezők típusai alapján határoz meg. Ha nem használjuk akkor is minden lekérdezéshez létrejönnek. Ilyen esetben a neve a lekérdezésnél használt mező, aggregáció függvény nevével fog megegyezni.
Literálok
A literálok szöveg vagy szám értéket tartalmazó konstansok lehetnek. Egyszer string definiálását ’ jellel vezetjük be és zárjuk. Például: ’Hello’.
0-9 kezdődő értékek minden esetben numerikus értékek lesznek. Tizedes jegyek elválasztásához a .-ot használjuk. Definiálásnál használhatjuk a tudományos formát. Pl.: 1.2E5.
Változók
- $ jellel vezetjük be a string és dátum típusú értékeket tartalmazó változót
- # jellel a numerikus értéket tartalmazó változót kezdjük
- % jellel kezdőd változóban listát tárolunk
- @ jellel kezdőd változókat a nyomtatásnál használhatjuk a BEGIN-DOCUMENT részben. Ezek a változók a nyomtatás pozícionálását hivatottak tárolni.
Változók definiálásának szabályai
- Változónevek nem érzékenyek a kis- és nagybetűkre.
- Változó nem kezdődhet _ és : jelekkel
- Ha nem adunk értékek egy változónak akkor a string és dátum típusú változók null értékkel, míg a numerikus változók 0 értékkel inicializálódnak.
- Numerikus változók lehetséges típusai: FLOAT, INTEGER, DECIMAL.
- Minden deklarált változó globális az egész riportban, kivéve azok amelyek lokális alprogramban lettek definiálva. Részletesebben az alprogramok részben.
SQR nyelvben rengeteg foglalt szó található. Ezen a néven nem deklarálható változó, azonban ezek felhasználhatók a program kódban.
Néhány ilyen változó
- #current-line: ez a változó tartalmazza az adott sort a kimeneti riportban. Egy riport fejlécből, törzsből és láblécből áll. A változó értékét az előre definiált mérettel meghatározható hányadik sorban járunk a riportban és hány sor van még hátra.
- #current-column: adott oszlop a kimeneti riportban.
- #end-file: numerikus változó, amely 1 értéket ad vissza amikor egy Read utasítás a végére ér. Ellenkező esetben 0 az értéke. Tipikusan egy SQL lekérdezés eredménysorok beolvasásánál használjuk az utolsó beolvasott sor jelzésénél.
- #page-count: a kimeneti riport aktuális oldalszáma
- $current-date: rendszer aktuális dátuma
- #sql-count: egy insert, vagy egy update, vagy egy delete utasítás által változtatott sorok számát tartalmazza egy DML utasítás lefutását követően
- $sql-error: ez a változó veszi fel egy lekérdezés vagy DML utasítás által dobott SQL hiba leírását.
- $sqr-program: SQR programfájl neve
- $sqr-report: kimeneti riport fájl neve
- $username: futtató felhasználó
- stb.
Dátumok
Az SQR programozási nyelvben a dátumok értékeit karaktersorozatban tároljuk. A sztring értékekhez hasonlóan egy date változó elnevezése is $ jellel kezdődik azonban azért, hogy meg tudjuk különböztetni a típusát ez egy speciális Declare-variable … end-declare blokkban kell elhelyezni.
A dátum típusú változók esetében (jelentsen az adatbázis oszlop értéket, vagy a programban definiált dátum típusú értéket) mindig van a változó mögött egy dátumformázó maszkolás. Amely mind olvasáskor mind íráskor változtatható a változónevet követő formázási maszk megadásával
Lista
Listákban bármilyen típusú értékek tárolhatunk sorrendhelyesen, kivéve másik lista típust. Lista típus deklarálásához a változónevet % jellel kezdjük és LET paranccsal vezetjük be. Pl.: LET %LIST1 = LIST (num_var1|str_val1, num_var2|str_val2…). Egy lista típusú érték nem szerepelhet egy lokális függvény paraméterében.