CliPreSQLExtは、DBCHCLのCLIプリプロセスSQLユーザー出口関数です。CliPreSQLExtを使用して、データベースの速度低下の原因になるSQLリクエストをフィルタリングし、データベースに送られるSQLリクエストを制御し、さらにSQLリクエストの時間統計を収集します。
CliPreSQLExtの呼び出し
CliPreSQLExtは、CLIIRQの直前に呼び出します。 CliPreSQLExtを呼び出す前に、CLIは以下のことを行ないます。
- 変数の長さが要求されない場合、CLIは、SQLリクエストが内部CLIバッファに格納できるかどうかを調べます。
リクエストの長さが内部最大バッファ長以下である場合は、プロセスは次のステップに続きます。そうでない場合は、アボートし、エラー302を返します。
- SQLリクエストの長さがCliPreSQLExt構造体に格納されます。
リクエストの長さが内部バッファ サイズ以下である場合は、プロセスは次のステップに続きます。そうでない場合は、アボートし、エラー302を返します。
- CliPreSQLExtを呼び出した後、CLIは以下のことを行ないます。
- EM_OKが返された場合、Teradata SQLをデータベースに送信する。
- エラー メッセージを受け取った場合には、リクエストをアボートします。 Teradata SQLリクエストがアボートされたときの通常のCLIエラー ロジックを使用します。
CliPreSQLExt関数の範囲内でTeradata SQLのバッファ サイズを超えてはなりません。バッファ サイズを超えると、CLIの他の領域が破壊されます。破壊は、プラットフォームに左右されます。
インターフェース
struct CliPreSQLExit { char *SQL_Request_ptr; /* pointer to user request */ char Start_date[80]; /* start date in ascii */ Int32 Clock_time; /* clock time */ char dbcname[DBCNAMLEN]; /* DBC name */ char username[USRNAMLEN]; /* username */ char account[ACTNAMLEN]; /* account */ char password[PWDNAMLEN]; /* password */ char domain[DOMAINLEN]; /* domain */ Int32 *SQL_len_ptr; /* length of user request */ Int32 logsessid; /* logical session id */ Int16 Process_Post; /* enable post processing */ };
Start_date[80]エレメントとClock_timeエレメントは、SQLリクエストのクロック タイムを測定するために手操作で設定する必要があります。
戻り値
処理に成功した場合には、CliPreSQLExtはゼロ(0)を返します。その他の場合には、CliPreSQLExtはエラー コードを返します。 ポストプロセスSQL関数をCLIが実行する場合には、変数Process_Postは"TRUE"に設定されます。
エラー処理
CLIのエラー コード351(SQLUSREXT)がユーザーに返されます。 ただし、errmsg.txtファイルにあるエラー コードが返される場合もあります。