next up previous contents
Next: SQLExt Up: Beispiele Previous: SQL-Anweisungen mit Parameter-Platzhaltern

Abfragen

Bei Abfragen von Daten aus Tabellen muß für jede Spalte in der Ergebnismenge ein Feld für die Datenkommunikation angelegt werden. Das passiert automatisch beim Vorbereiten der SQL-Anweisung, stat.results enthält dann einen Zeiger auf die Ergebniszeile mit den entsprechenden Feldern oder NIL, wenn keine Ergebnisse zu erwarten sind. Über diese Felder kann man mit den Aufrufen FirstField(stat.results, field) und NextField(field) iterieren, bis field den Wert NIL hat. Jedes Feld der Ergebniszeile hat (wie die Parameterfelder) einen Namen. Dieser Name ist der Name der Spalte (wie in der selectList der SELECT-Anweisung oder bei der Tabellendefinition angegeben) und wird im folgenden Beispiel vor der zeilenweisen Ausgabe der eigentlichen Daten als Überschrift für jede Spalte der Ergebniszeile ausgegeben. Die Ergebniszeilen selber werden nacheinander mit Fetch ausgelesen und mit der Hilfsprozedur PutField ausgegeben.

 

 nnnnnnnnnnnn¯ 
PROCEDURE ListAll*;

VAR stat: SQL.Statement; field: SQL.Field;

BEGIN

stat := SQL.PrepareStatement(conn, "SELECT * FROM Friends");

SQL.Execute(stat);

IF (stat.ret = SQL.Success) & (stat.results # NIL) THEN

Out.Ln; SQL.FirstField(stat.results, field);

WHILE field # NIL DO

Out.String(field.name); Out.Char(" ");

SQL.NextField(field)

END ;

REPEAT

SQL.Fetch(stat);

IF stat.ret = SQL.Success THEN

Out.Ln;

SQL.FirstField(stat.results, field);

WHILE field # NIL DO

PutField(field); Out.Char(" ");

SQL.NextField(field)

END

END

UNTIL stat.ret # SQL.Success

END

END ListAll;



Christoph Steindl
Thu Jul 24 14:37:19 MET DST 1997