このコールバックは、SQL パススルー・スクリプトの実行時に、スクリプト実行の進行状況 (ステータス) を提供します。
void ul_sql_passthrough_observer_fn( ul_sql_passthrough_status * status );
ul_sql_passthrough_status スクリプト実行の現在のステータスを提供します。これには、状態、実行するスクリプトの数、現在実行されているスクリプト、登録呼び出しで提供されたユーザ・データが含まれます。
進行状況 observer コールバックは、次のように定義されます。
typedef void(UL_CALLBACK_FN * ul_sql_passthrough_observer_fn) (ul_sql_passthrough_status * status); |
ul_sql_passthrough_status 構造体は、次のように定義されます。
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; |
進行状況 observer コールバックは、次のメソッドによって登録されます。
UL_FN_SPEC ul_ret_void UL_FN_MOD ULRegisterSQLPassthroughCallback( SQLCA * sqlca, ul_sql_passthrough_observer_fn callback, ul_void * user_data ); |
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 ); ... } |
次のいずれかのアクションが返されます。
UL_ERROR_ACTION_CANCEL エラーを引き起こした操作をキャンセルします。
UL_ERROR_ACTION_CONTINUE エラーを引き起こした操作を無視して、実行を続けます。
UL_ERROR_ACTION_DEFAULT エラー・コールバックがない場合と同じように動作します。
UL_ERROR_ACTION_TRY_AGAIN エラーを引き起こした操作をリトライします。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |