どのように機能するか
多重スレッド処理では、単一のセッションで2つ以上のリクエストが開かれます。 アプリケーション プログラムでは、Initiate Request関数のDBCHCLの呼び出しとFetch関数のDBCHCLの呼び出しとを自由に混ぜて行なうことができます。 このようにすれば、古いリクエストの応答を調べている間に新しいリクエストを実行依頼することができます。
アプリケーションでは、Initiate Request関数のDBCHCLを呼び出すことによってリクエストをオープンします。 リクエストは、アプリケーションでEnd Request関数のDBCHCLを呼び出すまでは、オープンされているものとみなされます。
- 1セッション当たりに同時に活動状態にできるのは、1つのTeradata SQLリクエストだけです。(例外: アボート リクエストと切断リクエストは、他のリクエストが活動状態になっているセッションで受け入れられます)。
- データベース上で同時(1セッション当たり)にオープンできるのは、最大16個のTeradata SQLリクエストである。
この機能は、単一セッションで複数セッションの技法と同じような技法を提供します。
リクエストの識別
アプリケーション プログラムでは、リクエストを、リクエストのセッション番号とリクエスト番号、またはDBCHWATによって使用される割り当て済みトークンとリクエスト番号によって識別することができます。 リクエスト番号は、そのリクエストに対する後続のFetch、Rewind、およびEnd Requestの各操作への入力引数になります。
DBCHCLは、バッファ内の現在位置およびデータ量などの応答バッファの文脈を維持しています。 したがって、アプリケーションは、必要に応じて開いている任意のリクエストから応答データを取り出すことができ、他のリクエストを開始することができます(またはその両方)。
例
例えば、アプリケーションで、いくつかの応答行を返すSELECT文が入っているリクエストを開始するとします。 それからそのアプリケーションで1つの応答行を取り出し、その行に対するUPDATEが入っているリクエストを開始します。
次に別の応答行を取り出し、別のUPDATEを送ることができます。 UPDATEの結果は、必要になったときに調べることができます。 アプリケーションで追跡する必要があるのは、リクエスト番号だけです。