再入力不可コードを生成する 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 を使用します。
異なる接続に対する操作では通常のレコードロックメカニズムが使用され、互いにブロックしてデッドロックを発生させる可能性があります。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |