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

SQL Anywhere 11.0.1 (Deutsch) » UltraLite - C- und C++-Programmierung » API-Referenz » UltraLite C/C++ - Gemeinsame API-Referenz

 

Callback-Funktion für ULRegisterSQLPassthroughCallback

Diese Callback-Funktion gibt den Fortschritt der Skriptausführung (Status) während einer SQL-Passthrough-Skriptausführung an.

Syntax
void ul_sql_passthrough_observer_fn( ul_sql_passthrough_status * status ); 
Parameter
  • ul_sql_passthrough_status   Zeigt den aktuellen Status der Skriptausführung mit Status, Anzahl der auszuführenden Skripten, derzeit ausgeführtem Skript und den Benutzerdaten, die im registrierten Aufruf übergeben werden.

Beispiel

Die Beobachter-Callbackfunktion für den Verarbeitungsfortschritt wird wie folgt definiert:

typedef void(UL_CALLBACK_FN * ul_sql_passthrough_observer_fn)
    (ul_sql_passthrough_status * status);

Die ul_sql_passthrough_status-Struktur ist wie folgt definiert:

typedef struct {
    ul_sql_passthrough_state	   state; // current state
    ul_u_long   script_count;          // total number of scripts to execute
    ul_u_long   cur_script;            // current script being executed (1-based)
    ul_bool     stop;                  // set to true to stop script execution
                                       // can only be set in the starting state
    ul_void *   user_data;             // user data provided in register call
    SQLCA *     sqlca;
} ul_sql_passthrough_status;

Die Beobachter-Callbackfunktion für den Verarbeitungsfortschritt wird über die folgende Methode registriert:

UL_FN_SPEC ul_ret_void UL_FN_MOD ULRegisterSQLPassthroughCallback(
SQLCA *                         sqlca,
ul_sql_passthrough_observer_fn  callback,
ul_void *                       user_data );

Nachstehend finden Sie einen Callback-Beispielcode zum Aufruf von ULRegisterSQLPassthroughCallback:

static void UL_GENNED_FN_MOD passthroughCallback(ul_sql_passthrough_status * status) {
    switch( status->state ) {
        case UL_SQL_PASSTHROUGH_STATE_STARTING:
            printf( "SQL Passthrough script execution starting\n" );
            break;
        case UL_SQL_PASSTHROUGH_STATE_RUNNING_SCRIPT:
            printf( "Executing script %d of %d\n", status->cur_script, status->script_count );
            break;
        case UL_SQL_PASSTHROUGH_STATE_DONE:
            printf( "Finished executing SQL Passthrough scripts\n" );
            break;
        default:
            printf( "SQL Passthrough script execution has failed\n" );
            break;
    }
}

int main() {
    ULSqlca sqlca;

    sqlca.Initialize();
    ULRegisterSQLPassthroughCallback( sqlca.GetCA(), passthroughCallback, NULL );
    DatabaseManager * dm = ULInitDatabaseManager( sqlca );
    ...
}
Rückgabewert

Gibt eine der folgenden Aktionen zurück:

  • UL_ERROR_ACTION_CANCEL   Vorgang abbrechen, der zu dem Fehler geführt hat.

  • UL_ERROR_ACTION_CONTINUE   Fortsetzen und den Vorgang ignorieren, der zu dem Fehler geführt hat.

  • UL_ERROR_ACTION_DEFAULT   So verhalten, als ob es keinen Fehler-Callback gibt.

  • UL_ERROR_ACTION_TRY_AGAIN   Vorgang wiederholen, der zu dem Fehler geführt hat

Siehe auch