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

SAP Sybase SQL Anywhere 16.0 » SQL Anywhere サーバ プログラミング » Embedded SQL » SQLCA (SQL Communication Area)

 

複数の SQLCA

再入力不可コードを生成する SQL プリプロセッサオプション (-r-) を使用しないでください。再入可能コードは、静的に初期化されたグローバル変数を使用できないため、少しだけサイズが大きく、遅いコードになります。ただし、その影響は最小限です。

プログラムで使用する各 SQLCA は db_init を呼び出して初期化し、最後に db_fini を呼び出してクリーンアップします。

Embedded SQL 文の SET SQLCA を使用して、SQL プリプロセッサにデータベース要求で別の SQLCA を使用することを伝えます。通常は、EXEC SQL SET SQLCA 'task_data->sqlca'; のような文をプログラムの先頭かヘッダファイルに置いて、SQLCA 参照がそのタスクに特定のデータを指すようにします。この文はコードを生成しないため、パフォーマンスに影響はありません。この文はプリプロセッサ内部の状態を変更して、指定の文字列で SQLCA を参照するようにします。

各スレッドには専用の SQLCA が必要です。この条件は、Embedded SQL を使用していて、アプリケーションの複数のスレッドから呼び出される、共有ライブラリ (DLL など) 内のコードにも適用されます。

複数 SQLCA のサポートは、サポートされるどの Embedded SQL 環境でも使用できますが、再入可能コードでは必須です。

複数のデータベースに接続するために複数の SQLCA を使用したり、単一のデータベースに対して複数の接続を持つ必要はありません。

各 SQLCA は、無名の接続を 1 つ持つことができます。各 SQLCA はアクティブな接続、つまり現在の接続を持ちます。

特定のデータベース接続に対するすべての操作では、その接続が確立されたときに使用されたのと同じ SQLCA を使用します。

注意

異なる接続に対する操作では通常のレコードロックメカニズムが使用され、互いにブロックしてデッドロックを発生させる可能性があります。

 参照