VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

语句相关接口

OCIStmtPrepare

功能描述

准备要执行的SQL或PL/SQL语句。

功能说明

OCI应用程序使用此调用准备SQL或PL/SQL语句以供执行。

OCIStmtPrepare()调用定义应用程序请求。

接口信息

函数/过程

OCIStmtPrepare的语法如下:

sword OCIStmtPrepare ( OCIStmt       *stmtp,
                       OCIError      *errhp,
                       const OraText *stmt, 
                       ub4            stmt_len,
                       ub4            language,
                       ub4            mode );

参数解释如下:

  • stmtp(IN):与要执行的语句关联的语句句柄。默认情况下,它在派生它的环境句柄中包含编码设置。语句只能在UTF-16环境中以UTF-16编码编写。
  • errhp(IN):输出参数,当出现错误时,您可以传递给OCIErrorGet()以获取诊断信息的错误句柄。
  • stmt(IN):要执行的SQL或PL/SQL语句。必须是以NULL结尾的字符串。也就是说,结束字符是一个空字节数,具体取决于编码。该语句必须采用前一次调用OCIEnvNlsCreate()的charset参数指定的编码。始终将参数强制转换为(text*)。在UTF-16中准备语句后,绑定和定义缓冲区的字符集默认为UTF-16。
  • stmt_len(IN):语句的长度(字符或字节数),具体取决于编码。不能为零。
  • Language(IN):指定V7或本机语法。可能的值如下所示:
    • OCI_V7_SYNTAX:V7 ORACLE解析语法。(暂不支持)
    • OCI_NTV_SYNTAX:语法取决于服务器的版本。
    • OCI_FOREIGN_SYNTAX:根据会话中设置的SQL翻译配置文件指定要翻译的语句。(暂不支持)
  • mode(IN):与OCIEnvCreate()调用中的模式类似,但此模式具有更高的优先级,因为它可以覆盖“自然”继承的模式设置。可能的值是- OCI_DEFAULT(默认模式)或OCI_PREP2_IMPL_RESULTS_CLIENT。当在外部过程中进行此调用且需要处理隐式结果时,该模式应作为OCI_PREP2_IMPL_RESULTS_CLIENT传递。

其他说明

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一起使用。

其他说明

OCIStmtFetch

功能描述

从(可滚动的)结果集中获取一行。

功能说明

如果预取的行足够,则fetch调用是本地调用。然而,这对应用程序来说是透明的。

如果正在读取LOB列,将获取LOB定位器,以便在这些定位器上执行后续LOB操作。如果涉及长列,则关闭预取。

使用OCI_ATTR_ROWS_FETCHED查找在上一次提取调用中成功提取到用户缓冲区的行数。

接口信息

函数/过程

OCIStmtFetch的语法如下:

sword OCIStmtFetch ( OCIStmt     *stmtp,
                     OCIError    *errhp, 
                     ub4          nrows,
                     ub2          orientation,
                     ub4          mode );

参数解释如下:

  • stmtp(IN):语句句柄。
  • errhp(IN):当出现错误时,您可以传递给OCIErrorGet()以获取诊断信息的错误句柄。
  • nrows(IN):要从当前位置提取的行数。
  • orientation(IN):唯一可接受的值是OCI_FETCH_NEXT,这也是默认值。
  • mode(IN):指定各种操作模式。对于默认模式,唯一有效的模式是OCI_DEFAULT。

其他说明

OCIStmtFetch2

功能描述

从(可滚动的)结果集中获取一行。

功能说明

从(可滚动的)结果集中获取一行。支持游标操作。

接口信息

函数/过程

OCIStmtFetch2 的语法如下:

sword OCIStmtFetch2 ( OCIStmt     *stmthp,
                      OCIError    *errhp, 
                      ub4          nrows,
                      ub2          orientation,
                      sb4          fetchOffset,
                      ub4          mode );

参数解释如下:

  • stmtp(IN):语句句柄。
  • errhp(IN):当出现错误时,您可以传递给OCIErrorGet()以获取诊断信息的错误句柄。
  • nrows(IN):要从当前位置提取的行数。
  • orientation(IN):可接受的值为:
    • OCI_DEFAULT:具有与OCI_FETCH_NEXT相同的效果
    • OCI_FETCH_CURRENT :获取当前行。
    • OCI_FETCH_NEXT:从当前位置获取下一行。它是默认值(与OCI_default具有相同的效果)。用于不可滚动的语句句柄。
    • OCI_FETCH_FIRST:获取结果集中的第一行。
    • OCI_FETCH_LAST:获取结果集中的最后一行。
    • OCI_FETCH_PRIOR:将结果集定位在结果集中当前行的前一行。您可以使用此模式从“前一行”中提取多行。
    • OCI_FETCH_ABSOLUTE:使用绝对定位获取结果集中的行号(由fetchOffset参数指定)。
    • OCI_FETCH_RELATIVE:使用相对定位获取结果集中的行号(由fetchOffset参数指定)。
  • fetchOffset(IN):要与方向参数一起用于更改当前行位置的偏移。
  • mode(IN):指定各种操作模式。对于默认模式,唯一有效的模式是OCI_DEFAULT。

其他说明

OCIStmtRelease

功能描述

释放通过调用OCIStmtPrepare()获得的语句句柄。

功能说明

把语句句柄所占资源释放。目前只提供兼容性接口。

接口信息

函数/过程

OCIStmtRelease的语法如下:

sword OCIStmtRelease ( OCIStmt        *stmthp,  
                       OCIError       *errhp,
                       const OraText  *key,
                       ub4             keylen,
                       ub4             mode ); 

参数解释如下:

  • stmtp(IN/OUT):语句句柄。
  • errhp(IN):当出现错误时,您可以传递给OCIErrorGet()以获取诊断信息的错误句柄。
  • key(IN):仅对语句缓存有效。要与缓存中的语句关联的键。这是调用者传入的SQL字符串。如果传入NULL键,则该语句不会被标记。
  • keylen(IN):仅对语句缓存有效,key的长度。
  • mode(IN):指定各种操作模式。有效模式包括:
    • OCI_DEFAULT:默认模式
    • OCI_STRLS_CACHE_DELETE:仅对语句缓存有效。语句不再保存在缓存中。

其他说明