确定OCCI中的SQL语句类型

时间:2015-02-18 12:40:00

标签: c++ sql oracle prepared-statement occi

我正在使用Oracle C ++调用接口(OCCI)为Oracle编写通用数据库处理层。它必须接受应用程序其他部分提供的SQL字符串(不指示它是什么类型的语句),然后应该检查应用程序的调用部分是否允许语句类型,如果是,则代表它执行它来电者。

但是,我找不到从我根据提供的SQL字符串创建的OCCI语句中获取SQL语句类型(选择,更新,删除等)的有效方法。

在OCI中,可以通过在OCI语句句柄上调用OCIAttrGet()来获取此信息,将OCI_ATTR_STMT_TYPE传递给attrtype参数,但我在OCCI中找不到任何等效函数。

可以通过调用getOCIStatement()从OCCI语句中获取OCI语句句柄,但到目前为止,从此OCI语句句柄获取语句类型属性的尝试失败了:

  OCIStmt *ociStmt = sqlstmt->getOCIStatement();
  ub2 statementType = OCI_STMT_UNKNOWN;
  OCIError *errhp = 0;

  sword result = OCIAttrGet(ociStmt, OCI_HTYPE_STMT, &statementType, 0, OCI_ATTR_STMT_TYPE, errhp);

当我执行上述操作时,我得到result = -2statementType

没有变化

无论如何,我认为这种做法相当倒退,而且更倾向于与OCCI一起干活。

有没有人知道如何确定准备好的OCCI语句的SQL语句类型(没有解析原始sql字符串,这既不高效也不安全)?

0 个答案:

没有答案