SQLCA是一个存储区域,将统计和错误从应用程序传递到数据库服务器再传回应用程序的每个数据库请求会使用它。SQLCA 用作应用程序到数据库的通信链接的句柄。它会被传递到需要与数据库服务器进行通信的所有数据库库函数中。它会在所有嵌入式 SQL 语句上被隐式传递。
全局 SQLCA 变量在接口库中定义。
预处理器会为全局 SQLCA 变量生成外部引用,并且会为该变量的指针生成外部引用。该外部引用名为 sqlca,类型为 SQLCA。指针名为 sqlcaptr。实际的全局变量在导入库中声明。
SQLCA 由 sqlca.h 头文件定义,该文件包括在安装目录的 h 子目录中。
何时使用多个 SQLCA
您可以在任一受支持的嵌入式 SQL 环境中使用多个 SQLCA 支持,但仅在再入式代码中要求这样做。 下面的列表详细说明必须使用多个 SQLCA 的环境: * 多线程应用程序 如果多个线程使用同一 SQLCA,上下文切换会导致多个线程同时使用该 SQLCA。每个线程都必须具有它自己的 SQLCA。当 DLL 使用嵌入式 SQL 且被应用程序中的多个线程调用时,也会发生这种情况。 * 动态链接库和共享库DLL 只有一个数据段。数据库服务器在处理一个应用程序发出的请求时,也可能会优先处理另一个应用程序向该数据库服务器发出的请求。如果您的 DLL 使用全局 SQLCA,则这两个应用程序会同时使用它。每个 Windows 应用程序都必须具有它自己的 SQLCA。 * 具有一个数据段的 DLL可以将 DLL 创建为只有一个数据段,或者对于每个应用程序有一个数据段。如果您的 DLL 只有一个数据段,则无法使用全局 SQLCA,其原因与 DLL 无法使用全局 SQLCA 的原因相同。每个应用程序必须具有它自己的 SQLCA。