语句转换

ODBC 语句具有以下状态。

状态 说明
S0 未分配的语句。 (连接状态必须为 C4、C5 或 C6。有关详细信息,请参阅 Connection Transitions.)
S1 Allocated 语句。
S2 准备语句。 不会创建任何结果集。
S3 准备语句。 将创建一个 (可能为空) 结果集。
S4 已执行语句,但未创建任何结果集。
S5 语句已执行,创建结果集) (可能为空。 游标处于打开状态,位于结果集的第一行之前。
S6 游标使用 SQLFetchSQLFetchScroll 定位。
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] 尚未调用 SQLFetchSQLFetchScrollSQLExtendedFetch

[6] 已调用 SQLFetchSQLFetchScroll

[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,则驱动程序管理器将返回此错误,如果 SQLFetchSQLFetchScroll 已返回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] SourceDescHandleTargetDescHandle 参数与异步运行的 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 参数与异步运行的 SQLGetDescFieldSQLGetDescRec 函数中的 DescriptorHandle 参数相同。

[5] DescriptorHandle 参数不同于以异步方式运行的 SQLGetDescFieldSQLGetDescRec 函数中的 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] SQLSetPosSQLBulkOperations 已从状态 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] SQLSetPosSQLBulkOperations 已从状态 S6 调用并返回SQL_NEED_DATA。

[6] 针对SQL_SUCCESS返回的单个参数对 SQLPutData 进行一次或多项调用,然后针对同一参数调用 SQLPutDataStrLen_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。