Mit der GETVAL-Anweisung können Sie stückweise Werte aus einer LONG-Spalte lesen.
Die GETVAL-Anweisungen müssen sich an eine FETCH-Anweisung anschließen. Durch jede auf diese FETCH-Anweisung folgende GETVAL-Anweisung wird der nächste Teil des Inhalts ab der aktuellen Position aus der LONG-Spalte der Datenbanktabelle gelesen.
Sie haben das Lesen der Daten aus der LONG-Spalte mit einer FETCH-Anweisung begonnen.
EXEC SQL [<session_spec>] GETVAL INTO (<parameter_list>)
· Die GETVAL-Anweisung muss bis auf das Schlüsselwort GETVAL der vorausgehenden FETCH-Anweisung entsprechen. So muss zum Beispiel die Reihenfolge und Anzahl der Parameter in der Parameterliste <parameter_list> mit der Parameterliste der FETCH-Anweisung übereinstimmen.
· Zwischen der FETCH-Anweisung und der nachfolgenden GETVAL-Anweisung sowie zwischen den GETVAL-Anweisungen selbst dürfen Sie keine anderen SQL-Anweisungen ausführen.
· Wenn die der LONG-Spalte entsprechende Host-Variable vom Datentyp SQLLongDesc ist, dann können Sie nach Ausführen der GETVAL-Anweisung die Gesamtlänge der LONG-Spalte in der zugehörigen Strukturkomponente cbColLen ablesen.
· Wie oft Sie eine GETVAL-Anweisung ausführen müssen, können Sie durch Abfragen der Warnmeldung sqlwarn1 bestimmen. Solange sqlwarn1 den Wert W hat, wurde noch nicht der gesamte Inhalt der LONG-Spalte gelesen.
Nach Ausführen der FETCH-Anweisung wird der restliche Inhalt der LONG-Spalte gelesen durch die Anweisung
while
(sqlca.sqlwarn[1] == 'W')
EXEC SQL GETVAL INTO :i1, :l1, :l2;
· Wenn in einer GETVAL-Anweisung von einer bestimmten LONG-Spalte keine Daten gelesen werden sollen, dann belegen Sie in dieser Anweisung den entsprechenden Indikatorwert mit der vordefinierten Konstanten SQL_IGNORE.