FireBird-ben minden változónak rendelkezni kell típussal. Sőt, minden változónak definiáltnak kell lennie a használat előtt, ellenkező esetben az értéke NULL, mely definiálatlant jelent minden típus esetében. A NULL értékre nem alkalmazhatók összehasonlítások, valamint a beépített függvények általában nem fogadnak el NULL értéket, mint paramétert.
A nyelv -tekintve, hogy az SQL nyelv kiterjesztése, és így szükségszerűen támogatja a natív SQL típusok használatát- meglehetősen nagy számú beépített adattípussal rendelkezik. A táblázat mutatja a lehetséges típusok csoportjait.
Egész | SMALLINT | ||
INTEGER | |||
Valós | FLOAT | ||
DOUBLE PRECISION | |||
Fixpontos | DECIMAL(precision,scale) | ||
NUMERIC(precision,scale) | |||
Idő | DATE | ||
TIME | |||
TIMESTAMP | |||
Szöveg | CHAR(n) | ||
VARCHAR(n) | |||
LOB | BLOB |
A fixpontos típusok valójában származtatott típusok, mely származtatást a következő táblázat tartalmazza (3-as SQL dialektus esetén):
SMALLINT | |
INTEGER | |
DOUBLE PRECISION |
Referencia típusokat nem áll módunkban használni FireBird-ben. Szöveges típusok esetén mindig megadható, hogy a változó milyen karakterkészletet (Character Set) használjon, és azon belül milyen összehasonlítási sémát (Collation Order). Előbbit az adatbázis létrehozásakor kell meghatározni, utóbbit táblaszinten is megadhatjuk, illetve értelmezhetjük lokális változókra is. A lehetséges rendezések listája a helpben megtalálható. Példa:
FireBird alatt kétfajta típuskonverziót különböztetünk meg:
Az implicit konverzió a FireBird azon beépített mechanizmusát takarja, melyben a rendszer saját maga felismeri a konverzió szükségességét, és automatikusan végre is hajtja azt. Amennyiben ez nem sikerül, úgy kivétel generálódik. Példa:
Az explicit konverzió a programozó eszköze. Abban az esetben használandó, amikor a rendszer nem konvertálná az adatot automatikusan, azaz nem alkalmazza az implicit konverziót. Ez a funkció a CAST kulcszsóval érhetó el. Szintaxisa: CAST ( value | NULL AS datatype) A lehetséges konverziókat a következő táblázat tartalmazza:
DATE, TIME, TIMESTAMP | CHAR, VARCHAR |
CHAR, VARCHAR | DATE, TIME, TIMESTAMP |
TIMESTAMP | TIME, DATE |
TIME, DATE | TIMESTAMP |
NUMERIC types | CHAR, VARCHAR |
Minden esetben, amikor a CAST aktuális paraméterei alapján a konverzió nem elvégezhető, kivétel generálódik. Példa: Egy példa az aktuális dátum -TIMESTAMP típusú- konvertálására DATE típusúra: CAST('now' as DATE)
FireBird-ben az azonosítók legfeljebb 31 karakter hosszúak lehetnek (Constraint-ek esetében ez a szám csak 27). A kezdő karakter kötelezően betű, a továbbiakban számok, betűk és speciális jelek (_, $) váltakozva követhetik egymást. A FireBird nem tesz különbséget a kis- és nagybetűk között. Az objektumok neveinek globálisan egyedieknek kell lenniük az adatbázisban. Amennyiben egy objektum nevének a FireBird valamelyik kifejezését (Reserved word) szeretnénk használni, abban az esetben kettős aposztrofokba (" ... ") kell foglalnunk a nevet.
A változókat használatuk előtt deklarálni kell.
Szintaxis: DECLARE VARIABLE valtozo_nev datatype; Egy változót inicializálnunk kell. Ez nem történik meg automatikusan, minden változó a deklarálás után a NULL értéket veszi fel. Egy változónak a '=' operátorral adhatunk értéket az őt deklaráló eljárás törzsében. FireBird alatt nincs lehetőségünk konstansokat létrehozni, egy objektum konstans voltát nekünk kell biztosítanunk.
Az operátorokat, és azok precedenciáját ábrázolja a következő négy táblázat:
Szöveges | |
Matematikai | |
Összehasonlítás | |
Logikai |
Az összehasonlító operátorokhoz még hozzávehetők:
Ezek precedenciájának jellemzője, hogy a szerver akkor hajtja végre őket balról jobbra sorrendben, amikor már semmilyen operátorral nem kerülhet összetűzésbe (conflict).
BEGIN ... END | Blokk határoló |
DECLARE VARIABLE ... | Deklaráció |
/* ... */ | Komment |
= | Értékadás |
SELECT ... FROM ... INTO ... | Lekérdezés az adatbázisból (SQL utasítás) |
FOR SELECT ... FROM ... INTO ... BEGIN ... END | Automatikus kurzorlétrehozás az eredményhez |
INSERT | Adat beszúrása az adatbázisba (SQL utasítás) |
UPDATE | Adatok módosítása az adatbázisban (SQL utasítás) |
DELETE | Adat törlése az adatbázisból (SQL utasítás) |
IF ... THEN ... ELSE ... | Feltételes elágazás |
WHILE ... DO BEGIN ... END | Elöltesztelős ciklus |
EXCEPTION ... | Adott kivétel dobása |
EXECUTE PROCEDURE ... | Eljáráshívás |
EXIT | Kilépés a teljes eljárásból |
NULL | Üres utasítás |
SUSPEND | Egy sornyi visszatérési érték elküldése |
WHEN ... DO BEGIN ... END | Kivételkezelő utasításrész |
Az egyes műveletek végrehajtását számtalan segédfüggvény segíti, melyekkel többek között numerikus, karakterkezelési, dátumkezelési és konverziós műveletek végezhetők. Az utasítások felsorolásából is látszik, hogy a FireBird a külvilág felé zárt, csak az adatbázisban tárolt adatokhoz fér hozzá. Adatértékeket, mint például a változók tartalmát nem lehet vele a képernyőre, normál állományba kiírni, vagy a képernyőről, normál állományból beolvasni. A SELECT eredményeit a blokk változóiban kell felfogni. Természetesen ezen értékek nem vesznek el örökre előlünk, a kapcsolatot a FireBird blokk és a külvilág között a kapcsolódó segédprogramok tudják megjeleníteni.
Példa: