支持OCIStmtExecute的OCI_DESCRIBE_ONLY模式接口
OCIStmtExecute
功能描述
将应用程序请求与服务器关联。
功能说明
将应用程序请求与服务器关联。
接口信息
函数/过程
OCIStmtExecute 语法如下:
sword OCIStmtExecute ( OCISvcCtx *svchp,
OCIStmt *stmtp,
OCIError *errhp,
ub4 iters,
ub4 rowoff,
const OCISnapshot *snap_in,
OCISnapshot *snap_out,
ub4 mode );
具体参数解释如下:
- svchp(IN/OUT):服务上下文句柄。
- stmtp(IN/OUT):语句句柄。它定义了要在服务器上执行的语句和相关数据。
- errhp(IN/OUT):输出参数,当出现错误时,您可以传递给OCIErrorGet()以获取诊断信息的错误句柄。
iters(IN):语句执行次数。
- 对于非SELECT语句,此语句的执行次数等于iters-rowoff。
- 对于SELECT语句,如果iters为非零,则必须对语句句柄进行定义。执行过程会将iters行提取到这些预定义的缓冲区中,并根据预取行数预取更多行。如果不知道SELECT语句检索多少行,则将iters设置为零。
- 如果非SELECT语句的iters=0,此函数将返回一个错误。
- 如果DDL语句的iters不是1,此函数将返回一个错误。
- 对于阵列DML操作,将iters设置为<=32767以获得更好的性能。
rowoff(IN):数组绑定中的数据与此多行执行相关的起始索引。
snap_in(IN):此参数是可选的。如果提供了,则必须指向OCI_DTYPE_SNAP类型的快照描述符。此描述符的内容必须从上一次调用的snap_out参数中获取。如果SQL不是SELECT语句,则忽略描述符。该功能允许Oracle数据库的多个服务上下文查看数据库提交数据的相同一致快照。但是,即使使用相同的快照,一个上下文中未提交的数据对另一个上下文也不可见。
snap_out(IN):此参数是可选的。如果提供了,则必须指向OCI_DTYPE_SNAP类型的描述符。此描述符由不透明表示形式填充,该表示形式是当前的Oracle数据库系统更改号(SCN),适合作为后续调用OCistTextExecute()的管理单元输入。为避免“快照太旧”错误,请不要使用此描述符超过必要的时间。
mode(IN),模式包括:
- OCI_BATCH_ERRORS:有关此模式的信息,请参阅使用批次错误模式。
- OCI_COMMIT_ON_SUCCESS:在这种模式下执行语句时,如果执行成功,则在执行后提交当前事务。
- OCI_DEFAULT:在此模式下调用OCIStmtExecute()将执行该语句。它还隐式返回有关选择列表的描述信息。
- OCI_DESCRIBE_ONLY:此模式适用于希望在执行前描述查询的用户。在此模式下调用OCIStmtExecute()不会执行该语句,但会返回选择列表描述。为了最大限度地提高性能,Oracle建议应用程序以默认模式执行该语句,并使用伴随执行的隐式描述。
- OCI_EXACT_FETCH:当应用程序提前确切知道要提取多少行时使用。此模式关闭Oracle Database release 8或更高版本模式的预取,并要求在执行调用之前完成预取。使用此模式会在获取所需行后取消光标,并可能导致服务器端资源使用率降低。
- OCI_PARSE_ONLY:此模式允许用户在执行前解析查询。在此模式下执行将解析查询并返回SQL中的解析错误(如果有)。用户必须注意,这涉及到到到服务器的额外往返。为了最大限度地提高性能,Oracle建议用户以默认模式执行语句,默认模式将语句作为捆绑操作的一部分进行解析。
- OCI_STMT_SCROLLABLE_READONLY:结果集可滚动所需。无法更新结果集。有关此模式的更多信息,请参阅关于获取结果。此模式不能与任何其他模式一起使用。
OCI_RETURN_ROW_COUNT_ARRAY:此模式允许用户在每次迭代中获取DML行数。为非DML的语句传递此模式是错误的。有关更多信息,请参见语句句柄属性。此模式可与OCI_BATCH_ERRORS一起使用。
其他说明
无