Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - Programmierung » Embedded SQL » Daten abrufen

 

Cursor in Embedded SQL verwenden

Ein Cursor wird benutzt, um Zeilen aus einer Abfrage abzurufen, die mehrere Zeilen in ihrer Ergebnismenge hat. Ein Cursor ist ein Handle oder ein Name (identifier) für die SQL-Abfrage und eine Position innerhalb der Ergebnismenge.

Eine Einführung zu Cursor finden Sie unter Mit Cursor arbeiten.

 ♦  So verwalten Sie einen Cursor in Embedded SQL
  1. Deklarieren Sie einen Cursor für eine bestimmte SELECT-Anweisung mit der DECLARE-Anweisung.

  2. Öffnen Sie den Cursor mit der Anweisung OPEN.

  3. Rufen Sie die Ergebnisse Zeile für Zeile mit der FETCH-Anweisung aus dem Cursor ab.

  4. Wiederholen Sie das Abrufen der Zeilen, bis die Warnung Zeile nicht gefunden zurückgegeben wird.

    Fehler und Warnungen werden in der SQLCA-Struktur zurückgegeben. Siehe SQL-Kommunikationsbereich (SQLCA).

  5. Schließen Sie den Cursor mit der CLOSE-Anweisung.

Als Voreinstellung werden Cursor automatisch am Ende der Transaktion geschlossen (bei COMMIT oder ROLLBACK). Cursor, die mit einer WITH HOLD-Klausel geöffnet werden, bleiben für folgende Transaktionen geöffnet, bis sie explizit geschlossen werden.

Das folgende einfache Beispiel zeigt den Gebrauch von Cursor:



void print_employees( void )
{
  EXEC SQL BEGIN DECLARE SECTION;
  char      name[50];
  char      sex;
  char      birthdate[15];
  a_sql_len ind_birthdate;
  EXEC SQL END DECLARE SECTION;
  EXEC SQL DECLARE C1 CURSOR FOR
    SELECT GivenName || ' ' || Surname,
      Sex, BirthDate
    FROM Employees;
  EXEC SQL OPEN C1;
  for( ;; ) 
  {
    EXEC SQL FETCH C1 INTO :name, :sex, 
        :birthdate:ind_birthdate;
    if( SQLCODE == SQLE_NOTFOUND ) 
    {
      break;
    } 
    else if( SQLCODE < 0 ) 
    {
      break;
    }

    if( ind_birthdate < 0 ) 
    {
      strcpy( birthdate, "UNKNOWN" );
    }
    printf( "Name: %s Sex: %c Birthdate:
         %s.n",name, sex, birthdate );
  }
  EXEC SQL CLOSE C1;
}

Vollständige Beispiele für Cursor finden Sie unter Beispiel für statischen Cursor und Beispiel für dynamischen Cursor.

 Cursor positionieren
 Probleme mit der Cursorpositionierung