Sulautettu SQL

Sulautettu SQL ( Englanti ja sulautettujen SQL , lyhennettynä ESQL ) standardoi syntaksin lisäämällä SQL komennot ohjelmointikieliä. Upotusrajoitusten vuonna Ada , C , C ++ , COBOL , Fortran , SIKOTAUTI , Pascal ja PL / I on 2 osassa Foundation (SQL / säätiö) ja upottamista Java osassa 10 objektikieli Siteet ( SQL / OLB ) ja SQL -standardi ISO / IEC 9075 määritetty.

tekninen kuvaus

ESQL -käskyt lisätään ohjelmointikielen (= isäntäkieli) säännöllisten lausekkeiden sarjaan. Esikääntäjän muuntaa ESQL lausunnot normaaliin isännän koodin, joka sitten käännetään sen kääntäjä . (Jotkut COBOLin kääntäjiä sisältää integroidun ESQL esikääntäjän.) Muunnettu koodi sisältää puhelut rajapinta on tietokantaan . Tämä käyttöliittymä on linkitettävä kirjastona valmiissa ohjelmassa . Kirjasto riippuu käytetystä tietokannasta, ja sen toimittaa yleensä vastaava tietokannan valmistaja.

Koska ESQL on standardoitu, ohjelmia ESQL - kunhan ei omia ominaisuuksia vastaavien SQL murre käytettäessä - on oltava yhteensopivia tietokantoja eri valmistajilta, mutta vain tasolla lähdekoodia . Tämä tarkoittaa sitä, että kun tietokannan brändi muuttuu, joskus jopa silloin, kun saman tietokannan versio päivitetään, ESQL -esikääntäjän ja kääntäjän on käännettävä lähdekoodi uudelleen ja linkitettävä nykyiseen kirjastoon. Tämä erottaa ESQL: n samankaltaisista tarkoituksista, kuten ODBC tai JDBC , joissa tietokantaa muutettaessa (teoriassa) vain yksi ohjain muutetaan ja käännettyä ohjelmaa voidaan jatkaa. On kuitenkin olemassa ainakin yksi COBOL -kääntäjä, joka muuntaa ESQL -käskyt puheluiksi ODBC: ksi.

Tämän lähestymistavan etuna tietokantayhteyteen on se, että käännöshetkellä SQL -syntaksin lisäksi myös rajapintamuuttujien tyyppien yhteensopivuus voidaan tarkistaa tietokantajärjestelmän tietotyyppejä vastaan. Ajonaikaiset arkkitehtuurit, kuten ODBC , JDBC , ADO tai ADO.NET, eivät voi suorittaa tyyppitarkistusta.

syntaksi

ESQL -lausunnot koostuvat seuraavista:

EXEC SQL <sql-statement> <terminator>   für Nicht-Java
#sql { <sql-statement> };               für Java
 

z. COBOL:

EXEC SQL <sql-statement> END-EXEC.
 

z. C, C ++, Ada:

EXEC SQL <sql-statement>;
 

ohjelmointi

Viestintä SQL: n ja sovellusohjelman välillä tapahtuu ohjelmamuuttujien kautta. Jos näitä ohjelmamuuttujia käytetään SQL -lausekkeessa, niitä edeltää kaksoispiste.

Esimerkki:

EXEC SQL
SELECT vorname, nachname
INTO :vorname, :nachname
FROM mitarbeitertabelle
WHERE pnr = :pnr
;

Ennen SQL -komennon suorittamista muuttujalle 'pnr' on annettava arvo ympäröivällä ohjelmointikielellä. SQL-komennon suorittamisen jälkeen muuttujille "etunimi" ja "sukunimi" annetaan arvot- jos tietue löydettiin ollenkaan.

NullArvot sisältävät sarakkeet voidaan määrittää tietokantataulukossa . Useimmissa ohjelmointikielissä muuttujille ei voida antaa Nullarvoja, mutta muuttujalle annetaan aina jokin arvo.

Jos haluat käyttää taulukon sarakkeita, jotka Nullsisältävät myös arvoja, on käytettävä indikaattorimuuttujia. Ne on luotava tyyppiä int. Tämän muuttujan arvoksi asetetaan alle 0, jos sarake on tietokannassa Null.

Esimerkki:

EXEC SQL
SELECT vorname, nachname
INTO :vorname :i_vorname, :nachname :i_nachname
FROM mitarbeitertabelle
WHERE pnr = :pnr
;

Tässä käytetään muuttujia "etunimi" ja "sukunimi" - kuten yllä olevassa esimerkissä - lukemien arvojen tallentamiseen. Lisäksi indikaattorimuuttujat 'i_nimi' ja 'i_sukunimi' osoittavat, olivatko etu- ja sukunimi edes saatavilla. Jos z. Jos esimerkiksi vain sukunimi tallennettiin ja etunimi oli tuntematon ( Null), 'i_sukunimi' annettiin 0 ja 'i_etunimi' -1.

Katso myös

kirjallisuus

  • ISO 9075 Osa 1: Kehys . 2. painos. ISO / IEC, 2003 ( web.archive.org [PDF; 582 kB ; katseltu 24. elokuuta 2021] viitenumero: 9075-1: 2003 (E), osiot: 4.8.1, 5.3.3.1).
  • ISO 9075 Osa 2: Perustus . 2. painos. ISO / IEC, 2003 ( web.archive.org [PDF; 139 kB ; Haettu 24. elokuuta 2021] Viite: 9075-2: 2003 (E), luku: 20 Embedded SQL).
  • ISO 9075 Osa 3: Puhelutason rajapinta . 3. Painos. ISO / IEC, 2003 (viitenumero: 9075-3: 2003 (E), liite B.1 (käännösesimerkkejä sulautetusta SQL: stä matalan tason kirjastofunktiokutsuihin)).

nettilinkit