埋め込みSQLアプリケーションは、複数のTeradataセッションを使用して並列リクエスト処理を実行するようにプログラムすることができます。このようなアプリケーションでは、各セッションごとに1つずつ、いくつかのリクエストを同時に転送することができます。
マルチセッション アプリケーションは、単一セッション アプリケーションよりも、実装、デバッグ、および保守がより複雑なので、マルチセッション プログラミングを実装する前に、単一セッションに対する複文リクエストで、スループットおよび応答時間要件を満たせるかどうかを判断すべきです。
マルチセッション プログラミングが必要な状況であると判断した場合は、プリプロセッサが、マルチセッション アプリケーションを実装する機能を提供します。
マルチセッションの動作方法
使用する文 | 用途 |
---|---|
CONNECTまたはLOGONと、AS session_id句 | 各Teradataセッションに固有に名前を付けます。この処理によって複数のセッションを区別できます。 複数のセッションを使用する場合、アプリケーションはそれぞれのセッションに明示的に名前を付けなければなりません。 |
SET CONNECTION | 名前を付けた各セッションを、CONNECTまたはLOGON文で指定した固有セッション識別子を使用して切り替えます。 |
LOGOFF session_id | 特定の名前のセッションからアプリケーションを切断します。 |
LOGOFF ALL | すべてのセッションからアプリケーションを切断します。 |
非同期リクエストの動作方法
以下を実行した場合 | セッションの動作 |
---|---|
ASYNC句を実行可能SQLリクエストの追加 | 固有に名前を付けたリクエストを開始します。 セッションは、非同期リクエストの完了を待機せずにアプリケーションに制御を返します。 |
WAIT文の使用 | ANY、ALL、または非同期リクエストのリストの完了を待機します。 |
TEST文の使用 | 非同期リクエストの完了をテストし、それが完了した後にリクエストの結果を返します。 |
ASYNC文修飾子
プリプロセッサはそれぞれの非同期リクエストを、実行可能SQLリクエストに先行するASYNC文修飾子で指定された非同期リクエスト識別子を使用して識別することができます。
ASYNC修飾子が実行可能SQLリクエストに追加されると、そのリクエストは現在のセッションで開始され、非同期リクエストの完了を待機せずにアプリケーションに制御を返します。
WAIT文
アプリケーション プログラムは、複数のセッションに対して同時に保留されたリクエストを持つことができます。
- アプリケーションは、WAIT ANY構文を使用して非同期待機を呼び出すことができます。
未解決の非同期リクエストが完了すると待機は終了し、セッション識別子および非同期リクエスト識別子を返します。
- アプリケーションは、WAIT ANY構文を使用してすべての非同期リクエストを待機することができます。
すべての未解決のリクエストが完了すると、待機は終了します。
- アプリケーションは、WAIT asynchronous_request_id_list構文を使用して、すべてのアクティブな非同期リクエストの非同期リクエスト識別子を指定して、非同期待機を呼び出すことができます。
すべての指定したリクエストが完了すると、待機は終了します。
TEST文
TEST文は、非同期リクエストの完了をテストします。非同期リクエストが完了すると、TESTを使用して非同期リクエストの実行の状況を検索します。
TESTを使用して、リクエストの完了を待機することなしに、未解決の非同期リクエストが完了したかどうかを非同期にテストすることもできます。リクエストが完了していない場合、TESTはSQLの未完了を示す’not yet complete’メッセージを返します。
TESTは、非同期リクエストに対して一度だけ、およびリクエストの完了後だけに実行することができます。
SET CONNECTION文
SET CONNECTION文を使用すると、複数のセッション間でアプリケーションを切り替えることができます。
埋め込みSQLアプリケーションのステータス変数およびデータ構造
埋め込みSQLアプリケーションは、いくつかの標準化されたステータス変数とデータ構造を使用して、アプリケーションとデータベースとの間で通信します。
- SQLSTATE
- SQLCODE
アクティビティ カウント(クエリーによって返される行の数の列挙)も、多くのアプリケーションにとって有用です。アクティビティ カウントは、埋め込SQLアプリケーションの場合はSQLERRD配列の3番目の語で報告され、ストアド プロシージャの場合はACTIVITY_CODEとして宣言されるステータス変数で報告されます。
関連情報
- ASYNC修飾子については、ASYNC文修飾子を参照してください。
- WAITについては、WAITを参照してください。
- TESTについては、TESTを参照してください。
- SET CONNECTIONについては、SET CONNECTIONを参照してください。
- 完了と例外のステータス コードを受け取る標準ホスト変数については、結果コード変数を参照してください。
- SQLSTATEまたはSQLCODEについては、SQLSTATEを参照してください。
- SQLDAについては、SQL記述子領域(SQLDA)を参照してください。
- Teradataでこれと似ているSQLCODEとSQLSTATEはSQLコミュニケーション領域(SQLCA)と呼ばれ、SQLコミュニケーション領域(SQLCA)で説明されています。
- アクティビティ数については、ACTIVITY_COUNTとSQLSTATEのマッピングを参照してください。