Sybase Technical Library - Product Manuals Home
[Search Forms] [Previous Section with Hits] [Next Section with Hits] [Clear Search] Expand Search

SQLCA management for multi-threaded or reentrant code [Table of Contents] Fetching data

[-] Chapter 2: The Embedded SQL Interface
[-] The SQL Communication Area
[-] Using multiple SQLCAs


Using multiple SQLCAs


>> To manage multiple SQLCAs in your application:
  1. You must use the command line switch on the SQL preprocessor that generates reentrant code ( -r ). The reentrant code is a little larger and a little slower because statically initialized global variables cannot be used. However, these effects are minimal.

  2. Each SQLCA used in your program must be initialized with a call to db_init and cleaned up at the end with a call to db_fini .

    WARNING!

    Caution

    Failure to call db_fini for each db_init on NetWare can cause the database server to fail, and the NetWare file server to fail.

  3. The Embedded SQL statement SET SQLCA (SET SQLCA statement ) is used to tell the SQL preprocessor to use a different SQLCA for database requests. Usually, a statement such as: EXEC SQL SET SQLCA 'task_data->sqlca'; is used at the top of your program or in a header file to set the SQLCA reference to point at task specific data. This statement does not generate any code and thus has no performance impact. It changes the state within the preprocessor so that any reference to the SQLCA will use the given string.

For information about creating SQLCAs, see SET SQLCA statement .


When to use multiple SQLCAs

You can use the multiple SQLCA support in any of the supported Embedded SQL environments, but it is only required in reentrant code.

The following list details the environments where multiple SQLCAs must be used:


Connection management with multiple SQLCAs

You do not need to use multiple SQLCAs to connect to more than one database or have more than one connection to a single database.

Each SQLCA can have one unnamed connection. Each SQLCA has an active or current connection (see SET CONNECTION statement ). All operations on a given database connection must use the same SQLCA that was used when the connection was established.


Note:

Record locking

Operations on different connections are subject to the normal record locking mechanisms and may cause each other to block and possibly to deadlock. For information on locking, see the chapter Using Transactions and Locks .


SQLCA management for multi-threaded or reentrant code [Table of Contents] Fetching data