oracle 语句执行时报terminate called after throwing an instance of 'otl_tmpl_exception'解决

  在一次oracle操作程序调试过程中发现当每次执行到同一个select语句时程序就会抛出异常terminate called after throwing an instance of ‘otl_tmpl_exception<otl_exc, otl_conn, otl_cur>‘,并终止。为此我在网络上搜索该异常的处理方法:

  网络上的解释及处理方式:

  在linux下用c++连接mysql或oracle数据库时,若频繁调用otlstream构造函数,发生terminate called after throwing an instance of ‘otl_tmpl_exception<otl_exc, otl_conn, otl_cur>‘的问题,解决方法:

  在调用otl_connect类的void rlogon(const char* connect_str, const int aauto_commit=0)函数时,将aauto_commit的值置为1。

  例:
  db.rlogon("DSN=my_db;UID=sa;PWD=tiger",1);
  其中db为otl_connect类的对象。
  注意:第二参数aauto_commit设置为1,表示数据库事务自动提交;设置为0,表示数据库事务非自动提交。
 
  我遇到的情况跟该网上说明不一样,我是构造第二次otl_stream的时候就出现了该错误。
  oracle 语句执行时报terminate called after throwing an instance of 'otl_tmpl_exception<otl_exc, otl_conn, otl_cur>'解决

 

    最后检查语句发现第二次构建的select语句的where子句中字段值的类型不匹配,即图中org_code类型不匹配,字段值类型本应是int类,而出错的select中的却给成了字符类型

  改正后测试,通过。

  涨知识:oracle的where子句类型不匹配也会抛出terminate called after throwing an instance of ‘otl_tmpl_exception<otl_exc, otl_conn, otl_cur>‘异常。

  
  

 

 

oracle 语句执行时报terminate called after throwing an instance of 'otl_tmpl_exception<otl_exc, otl_conn, otl_cur>'解决

上一篇:oracle查看锁表和解锁


下一篇:Mysql之force index