Mit dieser Anweisung rufen Sie Zeichenfolgen- oder Binärdaten für eine Spalte der aktuellen Zeile eines Cursors ab. GET DATA wird normalerweise verwendet, um Felder des Typs LONG BINARY oder LONG VARCHAR abzurufen. Weitere Hinweise finden Sie unter SET-Anweisung.
GET DATA Cursorname COLUMN Spaltennummer OFFSET Start-Offset [ WITH TEXTPTR ] USING DESCRIPTOR SQLDA-Name | INTO Hostvariable, ...
Cursorname : Bezeichner oder Hostvariable
Spaltennummer : Ganzzahl oder Hostvariable
Start-Offset : Ganzzahl oder Hostvariable
SQLDA-Name : Bezeichner
COLUMN-Klausel Der Wert Spaltennummer beginnt bei eins und gibt an, aus welcher Spalte die Daten abgerufen werden sollen. Die Spalte muss ein Zeichenfolgen- oder Binärtyp sein.
OFFSET-Klausel Der Start-Offset gibt die im Feldwert zu überspringende Byte-Anzahl an. Im Allgemeinen ist das die Anzahl der Bytes, die zuvor abgerufen wurde. Die Anzahl der Bytes, die von dieser GET DATA-Anweisung abgerufen wird, ist durch die Länge der Zielhostvariablen bestimmt.
Der Indikatorwert für die Zielhostvariable ist eine kurze Ganzzahl, sodass er nicht immer die Anzahl von abgeschnittenen Bytes enthalten kann. Stattdessen enthält er einen negativen Wert, wenn das Feld NULL enthält, einen positiven Wert (NICHT unbedingt die Anzahl der abgeschnittenen Bytes), wenn der Wert abgeschnitten ist und NULL, wenn ein Nicht-NULL-Wert nicht abgeschnitten ist.
Dementsprechend gilt: Wenn ein LONG VARCHAR oder eine LONG VARCHAR-Hostvariable mit einem Offset verwendet wird, der größer als Null ist, gibt das Feld untrunc_len nicht die genaue Größe vor der Kürzung an.
WITH TEXTPTR-Klausel Wenn die WITH TEXTPTR-Klausel angegeben ist, wird ein Textzeiger in eine zweite Hostvariable oder in das zweite Feld im SQLDA abgerufen. Dieser Textzeiger kann mit den Transact-SQL-Anweisungen READ TEXT und WRITE TEXT verwendet werden. Der Textzeiger ist ein 16-Bit Binärwert und kann folgendermaßen deklariert werden:
DECL_BINARY( 16 ) textptr_var; |
Die WITH TEXTPTR-Klausel kann nur in Long-Datentypen (LONG BINARY, LONG VARCHAR, TEXT, IMAGE) verwendet werden). Wenn Sie versuchen, ihn mit einem anderen Datentyp zu verwenden, wird der Fehler INVALID_TEXTPTR_VALUE zurückgegeben.
Die Gesamtlänge der Daten wird im Feld SQLCOUNT der SQLCA-Struktur zurückgegeben.
Mit dieser Anweisung können Sie einen Teil von einem Spaltenwert aus der Zeile an der aktuellen Cursorposition abrufen. Der Cursor muss geöffnet und mithilfe von FETCH auf einer Zeile positioniert sein.
Keine.
Keine.
SQL/2003 Erweiterung des Herstellers
Im folgenden Beispiel wird GET DATA verwendet, um ein binäres großes Objekt (oftmals auch Binary Large Object oder kurz BLOB genannt) abzurufen.
EXEC SQL BEGIN DECLARE SECTION; DECL_BINARY(1000) piece; short ind; EXEC SQL END DECLARE SECTION; int size; /* Open a cursor on a long varchar field */ EXEC SQL DECLARE big_cursor CURSOR FOR SELECT long_data FROM some_table WHERE key_id = 2; EXEC SQL OPEN big_cursor; EXEC SQL FETCH big_cursor INTO :piece; for( offset = 0; ; offset += piece.len ) { EXEC SQL GET DATA big_cursor COLUMN 1 OFFSET :offset INTO :piece:ind; /* Done if the NULL value */ if( ind < 0 ) break; write_out_piece( piece ); /* Done when the piece was not truncated */ if( ind == 0 ) break; } EXEC SQL CLOSE big_cursor; |
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |