SQL-Anweisungen

Beispiele

Das folgende Programm fragt einige Datensätze aus der Tabelle mit dem Namen glb_ford_anm ab. Um die Elemente korrekt anzuzeigen, wird zuvor die Struktur dieser Tabelle ermittelt. Die elemente der Ergebnisliste werden jeweils in Kombination mit der zugehörigen Strukturangabe ausgegeben.

! Abfrage der Werte aus einer Tabelle
DIM descr$[1000] , d$[20000] , elem$[80] , r$[20000]
! mit DISPLAY IS definieren wir ein eigenes Ausgabefenster
! Wenn wir die Ausgabe in diesem Fenster sehen wollen,
! so kommentieren wir die Zeile einfach aus
DISPLAY IS MESSAGE WINDOW
CLRSCR
! Die abzufragenden Daten
Name$="glb_ford_anm"
! Die Start- und Endnummern setzen wir hier auf einen beliebigen Anfangswert.
! Die Werte müssen natürlich an die eigenen Bedürfnisse angepasst werden
StartSnr=100
EndSnr=110
IsDescription=0
descr$=SQL GET TABLE DESCRIPTION$(Name$)
n=LIST LEN(descr$)
IF IsDescription THEN
DISP "SQL-Beschreibung der Tabelle " Name$ " Anzahl : " n "\n"
DISP descr$ "\n"
END IF
k$ =" snr >="&VAL$(StartSnr)&" AND snr <="&VAL$(EndSnr)
r$=SQL QUERY$(name$ ; "" ; k$)
AnzahlDatensaetze=LIST LEN(r$)
DISP RPT$ (" -" ;80) "\n"
DISP " Anzahl Datensätze : " AnzahlDatensaetze "\n"
IF IsDescription THEN
DISP r$ "\n"
END IF
DISP RPT$(" -" ;80) "\n"
! Als Ergebnis eines Query-Kommandos bekommen wir immer eine Liste,
! die weitere Listen enthält. Die innersten Listen sind die einzelnen Datensätze.
! Wir erzeugen also zwei Schleifen. In der äußeren Schleife extrahieren wir einen
! Datensatz aus der Gesamtliste . Dann ermitteln wir die Anzahl der Elemente in
! der Ergebnisliste. Dabei gehen wir von der Annahme aus, dass ein Element immer
! dann vorhanden ist, wenn das entsprechende Listenelement eine Länge>0 Bytes hat.
! Als nächstes zeigen wir die Elemente mit ihrer jeweils zugehörigen Beschreibung an.
! Damit das Ganze etwas netter aussieht, formatieren wir die Ausgabe mit der USING-
! Anweisung
FOR OLoop=0 TO AnzahlDatensaetze-1
d$=LIST GET$(r$; OLoop)
n=LIST LEN (d$)
! Wir ermitteln , wie viele Elemente im Datensatz nicht leer sind
Nelements =0
FOR i=0 to n-1
IF SLEN(LIST GET$(d$ ; i))>0 THEN
Nelements=Nelements+1
NEXT
u$="’Datensatz ’XDDDDD’ Anzahl Elemente : ’DDL"
DISP USING u$ : OLoop +1 Nelements
! Nun geben wir die Elemente eines Datensatzes schön formatiert aus
FOR i=0 TO n-1
e$=LIST GET$(d$ ; i)
IF SLEN(e$) THEN
Elem$=LIST GET$(LIST GET$(descr$ ; i) ; 1)
DISP USING "20A ’: ’XKL" :Eelem$ e$
END IF
NEXT
DISP RPT$ (" -" ;40) "\n"
NEXT

Referenz

Der OBAS Interpreter enthält mehrere Funktionen, mit denen direkt Daten aus der Datenbank, die die Basis für INVEP bildet, abgefragt werden können. Aus Sicherheitsgründen sind keine Funktionen vorhanden, mit denen Daten manipuliert werden können, das bedeutet, die SQL-Funktionen können nur lesend und nicht schreibend auf die Datenbank zugreifen. Bei allen Schreibzugriffen auf die INVEP-Datenbank ist zusätzlich das INVEP-Sicherheitskonzept aktiv, mit dem verhindert wird, das unberechtigte Zugriffe (selbst lesende Zugriffe) erfolgen.

Die Ergebnisse von Datenbankabfragen werden immer in Form von Listen geliefert. Diese Listen können danach entweder mit den OBAS-Listenfunktionen oder mit den verschiedenen Stringfunktionen verarbeitet werden.

SQL SET MAX QUERY LINES Zeilenzahl
maximale Ergebniszeilenzahl für Abfragen setzen

SQL GET TABLE NUM ROWS( Tabellenname$ )
Anzahl der Datenzeilen in einer Tabelle liefern

SQL GET TABLE DESCRIPTION$( Tabellenname$ )
Tabellenbeschreibung in Form einer Liste liefern

SQL QUERY$( Tabellenname$ ; Feldname$ ; Kriterium$ )
Datenbankabfrage durchführen, Ergebnis als Liste liefern

Siehe auch



Schatten