语句转换

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。