语句转换
ODBC 语句具有以下状态。
状态 | 说明 |
---|---|
S0 | 未分配的语句。 (连接状态必须为 C4、C5 或 C6。有关详细信息,请参阅 Connection Transitions.) |
S1 | Allocated 语句。 |
S2 | 准备语句。 不会创建任何结果集。 |
S3 | 准备语句。 将创建一个 (可能为空) 结果集。 |
S4 | 已执行语句,但未创建任何结果集。 |
S5 | 语句已执行,创建结果集) (可能为空。 游标处于打开状态,位于结果集的第一行之前。 |
S6 | 游标使用 SQLFetch 或 SQLFetchScroll 定位。 |
S7 | 游标使用 SQLExtendedFetch 定位。 |
S8 | 函数需要数据。 尚未调用 SQLParamData。 |
S9 | 函数需要数据。 尚未调用 SQLPutData。 |
S10 | 函数需要数据。 已调用 SQLPutData。 |
S11 | 仍在执行。 在异步执行的函数返回SQL_STILL_EXECUTING后,语句将保持此状态。 在执行接受语句句柄的任何函数时,语句暂时处于此状态。 除 SQLCancel 的状态表外,S11 州中的临时居住地不会显示在任何状态表中。 当语句暂时处于 S11 状态时,可以通过从另一个线程调用 SQLCancel 来取消该函数。 |
S12 | 异步执行已取消。 在 S12 中,应用程序必须调用取消的函数,直到返回除 SQL_STILL_EXECUTING 以外的值。 仅当函数返回SQL_ERROR且 SQLSTATE HY008 (操作) 取消时,函数才会成功取消。 如果它返回任何其他值(如SQL_SUCCESS),则取消操作失败,函数正常执行。 |
状态 S2 和 S3 称为准备状态,将 S5 到 S7 状态作为游标状态,将 S8 到 S10 声明为需要数据状态,将 S11 和 S12 声明为异步状态。 在每个组中,转换仅在组中每个状态不同时才单独显示;在大多数情况下,组中的每个状态的转换都是相同的。
下表显示了每个 ODBC 函数如何影响语句状态。
SQLAllocHandle
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
--[1], [5], [6] | --[5] | --[5] | --[5] | --[5] | --[5] | --[5] |
--[2], [5] | --[5] | --[5] | --[5] | --[5] | --[5] | --[5] |
S1[3] | --[5] | --[5] | --[5] | --[5] | --[5] | --[5] |
--[4], [5] | --[5] | --[5] | --[5] | --[5] | --[5] | --[5] |
[1] 此行显示SQL_HANDLE_ENV HandleType 时的转换。
[2] 此行显示SQL_HANDLE_DBC HandleType 时的转换。
[3] 此行显示 SQL_HANDLE_STMT HandleType 时的转换。
[4] 此行显示SQL_HANDLE_DESC HandleType 时的转换。
[5] 使用指向有效句柄的 OutputHandlePtr 调用 SQLAllocHandle 会覆盖该句柄,而不考虑该句柄的先前内容,并可能导致 ODBC 驱动程序出现问题。 使用为 OutputHandlePtr 定义的同一应用程序变量调用 SQLAllocHandle 两次,而不调用 SQLFreeHandle 以在重新分配句柄之前释放句柄,这是不正确的 ODBC 应用程序编程。 以这种方式覆盖 ODBC 句柄可能会导致 ODBC 驱动程序的行为不一致或错误。
SQLBindCol
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | -- | -- | -- | -- | HY010 | HY010 |
SQLBindParameter
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | -- | -- | -- | -- | HY010 | HY010 |
SQLBrowseConnect、SQLConnect 和 SQLDriverConnect
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
08002 | 08002 | 08002 | 08002 | 08002 | 08002 | 08002 |
SQLBulkOperations
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | HY010 | HY010 | 24000 | 请参阅下一表 | HY010 | NS [c] HY010 o |
SQLBulkOperations (游标状态)
S5 已打开 |
S6 SQLFetch 或 SQLFetchScroll |
S7 SQLExtendedFetch |
---|---|---|
-- [s] S8 [d] S11 [x] | -- [s] S8 [d] S11 [x] | HY010 |
SQLCancel
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | -- | -- | -- | -- | S1[1] S2 [nr] 和 [2] S3 [r]和 [2] S5[3] 和 [5] S6 ([3] 或 [4]) 和 [6] S7[4] 和 [7] | 请参阅下一表 |
[1] SQLExecDirect 返回SQL_NEED_DATA。
[2] SQLExecute 返回SQL_NEED_DATA。
[3] SQLBulkOperations 返回SQL_NEED_DATA。
[4] SQLSetPos 已返回SQL_NEED_DATA。
[5] 尚未调用 SQLFetch、 SQLFetchScroll 或 SQLExtendedFetch 。
[6] 已调用 SQLFetch 或 SQLFetchScroll 。
[7] 已调用 SQLExtendedFetch 。
SQLCancel (异步状态)
S11 仍在执行 |
S12 Asynch 已取消 |
---|---|
NS[1] S12[2] | S12 |
[1] 语句在执行函数时暂时处于 S11 状态。 SQLCancel 是从其他线程调用的。
[2] 语句处于 S11 状态,因为SQL_STILL_EXECUTING异步返回了名为 的函数。
SQLCloseCursor
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | 24000 | 24000 | 24000 | S1 [np] S3 [p] | HY010 | HY010 |
SQLColAttribute
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | HY010 | 请参阅下一表 | 24000 | -- [s] S11 [x] | HY010 | NS [c] HY010 o |
SQLColAttribute (准备状态)
S2 无结果 |
S3 结果 |
---|---|
--[1] 07005[2] | -- [s] S11 x |
[1] 已SQL_DESC_COUNT FieldIdentifier 。
[2] 未SQL_DESC_COUNT FieldIdentifier 。
SQLColumnPrivileges、SQLColumns、SQLForeignKeys、SQLGetTypeInfo、SQLPrimaryKeys、SQLProcedureColumns、SQLProcedures、SQLSpecialColumns、SQLStatistics、SQLTablePrivileges 和 SQLTables
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
(IH) | S5 [s] S11 [x] | S1 [e] S5 [s] S11 [x] | S1 [e] 和 [1] S5 [s] 和 [1] S11 [x] 和 [1] 24000[2] | 请参阅下一表 | HY010 | NS [c] HY010 o |
[1] 当前结果是最后一个或唯一的结果,或者没有当前结果。 有关多个结果的详细信息,请参阅 多个结果。
[2] 当前结果不是最后一个结果。
SQLColumnPrivileges、SQLColumns、SQLForeignKeys、SQLGetTypeInfo、SQLPrimaryKeys、SQLProcedureColumns、SQLProcedures、SQLSpecialColumns、SQLStatistics、SQLTablePrivileges 和 SQLTables (游标状态)
S5 已打开 |
S6 SQLFetch 或 SQLFetchScroll |
S7 SQLExtendedFetch |
---|---|---|
24000 | 24000[1] | 24000 |
[1] 如果 SQLFetch 或SQLFetchScroll 未返回SQL_NO_DATA,则驱动程序管理器将返回此错误,如果 SQLFetch 或 SQLFetchScroll 已返回SQL_NO_DATA,则由驱动程序返回。
SQLCopyDesc
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH[1] | -- | -- | -- | -- | HY010 | NS [c] 和 [3] HY010 [o] 或 [4] |
IH[2] | HY010 | 请参阅下一个表 | 24000 | -- [s] S11 x | HY010 | NS [c] 和 [3] HY010 [o] 或 [4] |
[1] 此行显示 SourceDescHandle 参数为 ARD、APD 或 IPD 时的转换。
[2] 当 SourceDescHandle 参数为 IRD 时,此行显示转换。
[3] SourceDescHandle 和 TargetDescHandle 参数与异步运行的 SQLCopyDesc 函数中的参数相同。
[4] SourceDescHandle 参数或 TargetDescHandle 参数 (或两者) 都不同于异步运行的 SQLCopyDesc 函数。
SQLCopyDesc (准备状态)
S2 无结果 |
S3 结果 |
---|---|
24000[1] | -- [s] S11 [x] |
[1]此行显示 SourceDescHandle 参数为 IRD 时的转换。
SQLDataSources 和 SQLDrivers
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
-- | -- | -- | -- | -- | -- | -- |
SQLDescribeCol
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | HY010 | 请参阅下一个表 | 24000 | -- [s] S11 [x] | HY010 | NS [c] HY010 o |
SQLDescribeCol (准备状态)
S2 无结果 |
S3 结果 |
---|---|
07005 | -- [s] S11 [x] |
SQLDescribeParam
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | HY010 | -- [s] S11 [x] | HY010 | HY010 | HY010 | NS [c] HY010 [o] |
SQLDisconnect
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
--[1] | S0[1] | S0[1] | S0[1] | S0[1] | (HY010) | (HY010) |
[1] 调用 SQLDisconnect 可释放与连接关联的所有语句。 此外,这会将连接状态返回到 C2;在语句状态为 S0 之前,连接状态必须为 C4。
SQLEndTran
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
-- | -- | --[2] 或 [3] S1[1] | --[3] S1 [np] 和 ([1] 或 [2]) S1 [p] 和 [1] S2 [p] 和 [2] | --[3] S1 [np] 和 ([1] 或 [2]) S1 [p] 和 [1] S3 [p] 和 [2] | (HY010) | (HY010) |
[1] CompletionType 参数SQL_COMMIT SQLGetInfo 返回SQL_CURSOR_COMMIT_BEHAVIOR信息类型的SQL_CB_DELETE,或者 CompletionType 参数为SQL_ROLLBACK, SQLGetInfo 返回SQL_CURSOR_ROLLBACK_BEHAVIOR信息类型的SQL_CB_DELETE。
[2] CompletionType 参数为SQL_COMMIT, SQLGetInfo 返回SQL_CURSOR_COMMIT_BEHAVIOR信息类型的SQL_CB_CLOSE,或者 CompletionType 参数为SQL_ROLLBACK, SQLGetInfo 返回SQL_CURSOR_ROLLBACK_BEHAVIOR信息类型的SQL_CB_CLOSE。
[3] CompletionType 参数为SQL_COMMIT, SQLGetInfo 返回SQL_CURSOR_COMMIT_BEHAVIOR信息类型的SQL_CB_PRESERVE,或者 CompletionType 参数为SQL_ROLLBACK, SQLGetInfo 返回SQL_CURSOR_ROLLBACK_BEHAVIOR信息类型的SQL_CB_PRESERVE。
SQLExecDirect
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
(IH) | S4 [s] 和 [nr] S5 [s] 和 [r] S8 [d] S11 [x] | -- [e] 和 [1] S1 [e] 和 [2] S4 [s] 和 [nr] S5 [s] 和 [r] S8 [d] S11 [x] | -- [e]、[1]和 [3] S1 [e]、[2]和 [3] S4 [s]、[nr]和 [3] S5 [s]、[r]和 [3] S8 [d] 和 [3] S11 [x] 和 [3] 24000 [4] | 请参阅下一表 | HY010 | NS [c] HY010 [o] |
[1] 错误是由驱动程序管理器返回的。
[2] 驱动程序管理器未返回错误。
[3] 当前结果是最后一个或唯一的结果,或者没有当前结果。 有关多个结果的详细信息,请参阅 多个结果。
[4] 当前结果不是最后一个结果。
SQLExecDirect (游标状态)
S5 已打开 |
S6 SQLFetch 或 SQLFetchScroll |
S7 SQLExtendedFetch |
---|---|---|
24000 | 24000 [1] | 24000 |
[1] 如果 SQLFetch 或 SQLFetchScroll 未返回SQL_NO_DATA,则驱动程序管理器将返回此错误;如果 SQLFetch 或 SQLFetchScroll 已返回SQL_NO_DATA,则由驱动程序返回此错误。
SQLExecute
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
(IH) | (HY010) | 请参阅下一表 | S2 [e]、p 和 [1] S4 [s]、[p]、[nr]和 [1] S5 [s]、[p]、[r]和 [1] S8 [d]、[p]和 [1] S11 [x]、[p]和 [1] 24000 [p] 和 [2] HY010 [np] | 请参阅游标状态表 | HY010 | NS [c] HY010 [o] |
[1] 当前结果是最后一个或唯一的结果,或者没有当前结果。 有关多个结果的详细信息,请参阅 多个结果。
[2] 当前结果不是最后一个结果。
SQLExecute (准备状态)
S2 无结果 |
S3 结果 |
---|---|
S4 [s] S8 [d] S11 [x] | S5 [s] S8 [d] S11 [x] |
SQLExecute (游标状态)
S5 已打开 |
S6 SQLFetch 或 SQLFetchScroll |
S7 SQLExtendedFetch |
---|---|---|
24000 [p] HY010 [np] | 24000 [p], [1] HY010 [np] | 24000 [p] HY010 [np] |
[1] 如果 SQLFetch 或 SQLFetchScroll 未返回SQL_NO_DATA,则驱动程序管理器将返回此错误;如果 SQLFetch 或 SQLFetchScroll 已返回SQL_NO_DATA,则由驱动程序返回此错误。
SQLExtendedFetch
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | S1010 | S1010 | 24000 | 请参阅下一表 | S1010 | NS [c] S1010 [o] |
SQLExtendedFetch (游标状态)
S5 已打开 |
S6 SQLFetch 或 SQLFetchScroll |
S7 SQLExtendedFetch |
---|---|---|
S7 [s] 或 [nf] S11 [x] | S1010 | -- [s] 或 [nf] S11 [x] |
SQLFetch 和 SQLFetchScroll
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | HY010 | HY010 | 24000 | 请参阅下一表 | HY010 | NS [c] HY010 [o] |
SQLFetch 和 SQLFetchScroll (游标状态)
S5 已打开 |
S6 SQLFetch 或 SQLFetchScroll |
S7 SQLExtendedFetch |
---|---|---|
S6 [s] 或 [nf] S11 [x] | -- [s] 或 [nf] S11 [x] | HY010 |
SQLFreeHandle
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
-- [1] | HY010 | HY010 | HY010 | HY010 | HY010 | HY010 |
IH [2] | S0 | S0 | S0 | S0 | HY010 | HY010 |
-- [3] | -- | -- | -- | -- | -- | -- |
[1] 此行显示SQL_HANDLE_ENV或SQL_HANDLE_DBC HandleType 时的转换。
[2] 此行显示SQL_HANDLE_STMT HandleType 时的转换。
[3] 此行显示SQL_HANDLE_DESC HandleType 且显式分配描述符时的转换。
SQLFreeStmt
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH [1] | -- | -- | S1 [np] S2 [p] | S1 [np] S3 [p] | HY010 | HY010 |
IH [2] | -- | -- | -- | -- | HY010 | HY010 |
[1] 此行显示SQL_CLOSE Option 时的转换。
[2] 此行显示选项SQL_UNBIND或 SQL_RESET_PARAMS时的转换 。 如果 Option 参数SQL_DROP并且基础驱动程序是 ODBC 3*.x* 驱动程序,则驱动程序管理器将此映射到 SQLFreeHandle 的调用,并将 HandleType 设置为 SQL_HANDLE_STMT。 有关详细信息,请参阅 SQLFreeHandle 的转换表。
SQLGetConnectAttr
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
-- | -- | -- | -- | -- | -- | -- |
SQLGetCursorName
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | -- | -- | -- | -- | HY010 | HY010 |
SQLGetData
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | HY010 | HY010 | 24000 | 请参阅下一个表 | HY010 | NS [c] HY010 [o] |
SQLGetData (游标状态)
S5 已打开 |
S6 SQLFetch 或 SQLFetchScroll |
S7 SQLExtendedFetch |
---|---|---|
24000 | -- [s] 或 [nf] S11 [x] 24000 [b] HY109 [i] | -- [s] 或 [nf] S11 [x] 24000 [b] HY109 [i] |
SQLGetDescField 和 SQLGetDescRec
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | -- [1] 或 [2] HY010 [3] | 请参阅下一个表 | -- [1] 或 [2] 24000 [3] | -- [1]、[2]或 [3] S11 [3] 和 [x] | HY010 | NS [c] 或 [4] HY010 [o] 和 [5] |
[1] DescriptorHandle 参数是 APD 或 ARD。
[2] DescriptorHandle 参数是 IPD。
[3] DescriptorHandle 参数是 IRD。
[4] DescriptorHandle 参数与异步运行的 SQLGetDescField 或 SQLGetDescRec 函数中的 DescriptorHandle 参数相同。
[5] DescriptorHandle 参数不同于以异步方式运行的 SQLGetDescField 或 SQLGetDescRec 函数中的 DescriptorHandle 参数。
SQLGetDescField 和 SQLGetDescRec (准备状态)
S2 无结果 |
S3 结果 |
---|---|
--[1]、[2]或 [3] S11[2] 和 [x] | --[1]、[2]或 [3] S11 [x] |
[1] DescriptorHandle 参数是 APD 或 ARD。
[2] DescriptorHandle 参数是 IPD。
[3] DescriptorHandle 参数是 IRD。 请注意,当 DescriptorHandle 是 IRD 时,这些函数始终返回状态为 S2 的SQL_NO_DATA。
SQLGetDiagField 和 SQLGetDiagRec
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
--[1] | -- | -- | -- | -- | -- | -- |
IH[2] | --[3] | --[3] | -- | -- | --[3] | --[3] |
[1] 此行显示SQL_HANDLE_ENV、SQL_HANDLE_DBC或SQL_HANDLE_DESC HandleType 时的转换。
[2] 此行显示SQL_HANDLE_STMT HandleType 时的转换。
[3] SQL_DIAG_ROW_COUNT DiagIdentifier 时,SQLGetDiagField 始终返回此状态下的错误。
SQLGetEnvAttr
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
-- | -- | -- | -- | -- | -- | -- |
SQLGetFunctions
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
-- | -- | -- | -- | -- | -- | -- |
SQLGetInfo
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
-- | -- | -- | -- | -- | -- | -- |
SQLGetStmtAttr
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | --[1] 24000[2] | --[1] 24000[2] | --[1] 24000[2] | 请参阅下一表 | HY010 | HY010 |
[1] 语句属性未SQL_ATTR_ROW_NUMBER。
[2] 语句属性已SQL_ATTR_ROW_NUMBER。
SQLGetStmtAttr (游标状态)
S5 已打开 |
S6 SQLFetch 或 SQLFetchScroll |
S7 SQLExtendedFetch |
---|---|---|
--[1] 24000[2] | --[1] 或 ([v] 和 [2]) 24000 [b] 和 [2] HY109 [i] 和 [2] | -- [i] 或 ([v] 和 [2]) 24000 [b] 和 [2] HY109[1] 和 [2] |
[1] 属性参数未 SQL_ATTR_ROW_NUMBER。
[2] 属性 参数已SQL_ATTR_ROW_NUMBER。
SQLMoreResults
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
(IH) | --[1] | --[1] | -- [s] 和 [2] S1 [nf]、[np]和 [4] S2 [nf], [p], 和 [4] S5 [s] 和 [3] S11 [x] | S1 [nf]、[np]和 [4] S3 [nf]、[p] 和 [4] S4 [s] 和 [2] S5 [s] 和 [3] S11 [x] | HY010 | NS [c] HY010 [o] |
[1] 函数始终返回处于此状态的SQL_NO_DATA。
[2] 下一个结果是行计数。
[3] 下一个结果是结果集。
[4] 当前结果是最后一个结果。
SQLNativeSql
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
-- | -- | -- | -- | -- | -- | -- |
SQLNumParams
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | HY010 | -- [s] S11 [x] | -- [s] S11 [x] | -- [s] S11 [x] | HY010 | NS [c] HY010 [o] |
SQLNumResultCols
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | HY010 | -- [s] S11 [x] | -- [s] S11 [x] | -- [s] S11 [x] | HY010 | NS [c] HY010 [o] |
SQLParamData
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | HY010 | HY010 | HY010 | HY010 | 请参阅下一表 | NS [c] HY010 [o] |
SQLParamData (需要数据状态)
S8 需要数据 |
S9 必须放置 |
S10 可放置 |
---|---|---|
S1 [e] 和 [1] S2 [e]、[nr]和 [2] S3 [e], [r] 和 [2] S5 [e] 和 [4] S6 [e] 和 [5] S7 [e] 和 [3] S9 [d] S11 [x] | HY010 | S1 [e] 和 [1] S2 [e]、[nr]和 [2] S3 [e]、[r]和 [2] S4 [s]、[nr]和 ([1] 或 [2]) S5 [s], [r]、 ([1] 或 [2]) S5 ([s] 或 [e]) 和 [4] S6 ([s] 或 [e]) 和 [5] S7 ([s] 或 [e]) 和 [3] S9 [d] S11 [x] |
[1] SQLExecDirect 返回SQL_NEED_DATA。
[2] SQLExecute 返回SQL_NEED_DATA。
[3] SQLSetPos 已从状态 S7 调用并返回SQL_NEED_DATA。
[4] SQLBulkOperations 已从状态 S5 调用并返回SQL_NEED_DATA。
[5] SQLSetPos 或 SQLBulkOperations 已从状态 S6 调用并返回SQL_NEED_DATA。
SQLPrepare
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
(IH) | S2 [s] 和 [nr] S3 [s] 和 [r] S11 [x] | -- [s] 或 ([e] 和 [1]) S1 [e] 和 [2] S11 [x] | S1 [e] 和 [3] S2 [s]、 [nr]和 [3] S3 [s], [r] 和 [3] S11 [x] 和 [3] 24000[4] | 请参阅下一表 | HY010 | NS [c] HY010 [o] |
[1] 由于验证 SQLSTATE 为 HY009 [参数值无效] 或 HY090 [无效字符串或缓冲区长度] () ,否则,准备失败的原因为验证语句。
[2] 在验证 SQLSTATE 不是 HY009 [参数值无效] 或 HY090 [无效字符串或缓冲区长度] () 时,准备失败。
[3] 当前结果是最后一个或唯一的结果,或者没有当前结果。 有关多个结果的详细信息,请参阅 多个结果。
[4] 当前结果不是最后一个结果。
SQLPrepare (游标状态)
S5 已打开 |
S6 SQLFetch 或 SQLFetchScroll |
S7 SQLExtendedFetch |
---|---|---|
24000 | 24000 | 24000 |
SQLPutData
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | HY010 | HY010 | HY010 | HY010 | 请参阅下一表 | NS [c] HY010 [o] |
SQLPutData (需要数据状态)
S8 需要数据 |
S9 必须放置 |
S10 可放置 |
---|---|---|
HY010 | S1 [e] 和 [1] S2 [e]、[nr]和 [2] S3 [e]、 [r]和 [2] S5 [e] 和 [4] S6 [e] 和 [5] S7 [e] 和 [3] S10 [s] S11 [x] | -- [s] S1 [e] and [1] S2 [e], [nr], and [2] S3 [e], [r] 和 [2] S5 [e] 和 [4] S6 [e] 和 [5] S7 [e] 和 [3] S11 [x] HY011[6] |
[1] SQLExecDirect 返回SQL_NEED_DATA。
[2] SQLExecute 返回SQL_NEED_DATA。
[3] SQLSetPos 已从状态 S7 调用并返回SQL_NEED_DATA。
[4] SQLBulkOperations 已从状态 S5 调用并返回SQL_NEED_DATA。
[5] SQLSetPos 或 SQLBulkOperations 已从状态 S6 调用并返回SQL_NEED_DATA。
[6] 针对SQL_SUCCESS返回的单个参数对 SQLPutData 进行一次或多项调用,然后针对同一参数调用 SQLPutData , StrLen_or_Ind 设置为SQL_NULL_DATA。
SQLRowCount
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
(IH) | (HY010) | (HY010) | -- | -- | (HY010) | (HY010) |
SQLSetConnectAttr
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
--[1] | -- | -- | -- | --[2] 24000[3] | HY010 | HY010 |
[1] 当 Attribute 是连接属性时,此行显示转换。 有关 Attribute 为语句属性时的转换,请参阅 SQLSetStmtAttr 的语句转换表。
[2] 未SQL_ATTR_CURRENT_CATALOG Attribute 参数。
[3] 已SQL_ATTR_CURRENT_CATALOG Attribute 参数。
SQLSetCursorName
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | -- | -- | 24000 | 24000 | HY010 | HY010 |
SQLSetDescField 和 SQLSetDescRec
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH[1] | -- | -- | -- | -- | HY010 | HY010 |
[1] 此行显示当 FieldIdentifier 参数SQL_DESC_ARRAY_STATUS_PTR或SQL_DESC_ROWS_PROCESSED_PTR时,DescriptorHandle 参数为 ARD、APD、IPD 或 SQLSetDDD (的转换) IRD。 当 FieldIdentifier 为任何其他值时,为 IRD 调用 SQLSetDescField 是一个错误。
SQLSetEnvAttr
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
HY011 | HY011 | HY011 | HY011 | Y011 | HY01 | HY011 |
SQLSetPos
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | HY010 | HY010 | 24000 | 请参阅下一个表 | HY010 | NS [c] HY010 [o] |
SQLSetPos (游标状态)
S5 已打开 |
S6 SQLFetch 或 SQLFetchScroll |
S7 SQLExtendedFetch |
---|---|---|
24000 | -- [s] S8 [d] S11 [x] 24000 [b] HY109 [i] | -- [s] S8 [d] S11 [x] 24000 [b] HY109 [i] |
SQLSetStmtAttr
S0 未分配 |
S1 已分配 |
S2-S3 Prepared |
S4 执行 |
S5-S7 游标 |
S8-S10 需要数据 |
S11-S12 异步 |
---|---|---|---|---|---|---|
IH | -- | --[1] HY011[2] | --[1] 24000[2] | --[1] 24000[2] | HY010 [np] 或 [1] HY011 [p] 和 [2] | HY010 [np] 或 [1] HY011 [p] 和 [2] |
[1] Attribute 参数不是SQL_ATTR_CONCURRENCY、SQL_ATTR_CURSOR_TYPE、SQL_ATTR_SIMULATE_CURSOR、SQL_ATTR_USE_BOOKMARKS、SQL_ATTR_CURSOR_SCROLLABLE或SQL_ATTR_CURSOR_SENSITIVITY。
[2] Attribute 参数SQL_ATTR_CONCURRENCY、SQL_ATTR_CURSOR_TYPE、SQL_ATTR_SIMULATE_CURSOR、SQL_ATTR_USE_BOOKMARKS、SQL_ATTR_CURSOR_SCROLLABLE或SQL_ATTR_CURSOR_SENSITIVITY。