SQLAllocStmt -分配语句句柄

SQLAllocStmt() 分配新的语句句柄,并将其与连接句柄指定的连接相关联。 对于可以在任何时间分配的语句句柄数没有定义的限制。

在调用此函数之前,必须调用 SQLConnect()

必须在 SQLBindParam()SQLPrepare()SQLExecute()SQLExecDirect()或将语句句柄作为其输入自变量之一的任何其他函数之前调用此函数。

语法

SQLRETURN SQLAllocStmt (SQLHDBC    hdbc,
                        SQLHSTMT   *phstmt);

函数自变量

表 1. SQLAllocStmt 参数
数据类型 自变量 使用 描述
SQLHDBC hdbc 输入 连接句柄
SQLHSTMT * 语句 输出 指向语句句柄的指针

用法

Db2 for i CLI 使用每个语句句柄将所有描述符、结果值、游标信息和状态信息与所处理的 SQL 语句相关联。 虽然每个 SQL 语句都必须具有语句句柄,但您可以将这些句柄用于不同的语句。

对此函数的调用要求 hdbc 引用活动数据库连接。

要处理定位的 UPDATE 或 DELETE 语句,应用程序必须对 SELECT 语句和 UPDATE 或 DELETE 语句使用不同的语句句柄。

如果指向语句句柄 (phstmt) 的输入指针指向先前对 SQLAllocStmt()的调用所分配的有效语句句柄,那么将通过此调用覆盖原始值。 这是应用程序编程错误, Db2 for i CLI 未检测到该错误。

返回码

  • SQL_SUCCESS
  • SQL_ERROR
  • sql_invalid_handle

如果返回 SQL_ERROR ,那么 phstmt 参数将设置为 SQL_NULL_HSTMT。 应用程序应使用相同的 hdbc 自变量调用 SQLError() ,并将 hstmt 自变量设置为 SQL_NULL_HSTMT。

诊断

表 2。 SQLAllocStmt SQLSTAT
SQLSTATE 描述 说明
08003 连接未打开 hdbc 参数指定的连接未打开。 必须成功建立连接 (并且必须打开连接) ,驱动程序才能分配 hstmt
40003 * 语句完成未知 在该功能完成处理之前, CLI 与数据源之间的通信链路发生故障。
58004 系统错误 不可恢复的系统错误。
HY001 内存分配失败 驱动程序无法分配支持功能处理或完成所需的内存。
HY009 参数值无效 phstmt 是空指针。
HY013 * 内存管理问题 驱动程序无法访问支持处理或完成功能所需的内存。

示例

请参阅 SQLFetch-Fetch next row中的示例。

引用