200分!occi动态调用oracle存储过程有关问题
200分求助!!occi动态调用oracle存储过程问题
假设存储过程如下:
string sqlProc = "begin TEST_QUERY_USERS(:1,:2,:3);end;";
这个存储过程实现查询的功能,其中4个参数的类型分别为:
参数1:OUT,游标类型,作为返回值
参数2:IN,string类型
参数3:IN,int类型
我自定义了一个接口函数:ResultSet* ExecuteSQL(string strProc)
这个函数的功能就是执行存储过程,返回ResultSet
我现在只知道在执行sql语句之前,需要给Statement邦定存储过程的参数
代码如下:
很明显,这个函数完全依赖于我的存储过程。
如果存储过程中的参数个数和类型发生变化,那这个函数的1、2句将发生错误。
那么,我该怎么写,让这个函数能适应于所有的存储过程?
不胜感激!!!
暂时不能发布200分,之后会另加
------解决方案--------------------
存储过程的接收参数用自定义数组来存储;
------解决方案--------------------
假设存储过程如下:
string sqlProc = "begin TEST_QUERY_USERS(:1,:2,:3);end;";
这个存储过程实现查询的功能,其中4个参数的类型分别为:
参数1:OUT,游标类型,作为返回值
参数2:IN,string类型
参数3:IN,int类型
我自定义了一个接口函数:ResultSet* ExecuteSQL(string strProc)
这个函数的功能就是执行存储过程,返回ResultSet
我现在只知道在执行sql语句之前,需要给Statement邦定存储过程的参数
代码如下:
- C/C++ code
ResultSet* ExecuteSQL(string strProc) { Statement *stmt = con->createStatement(); try { stmt->setSQL(strProc); stmt->registerOutParam(1,OCCICURSOR); stmt->setString(2,"");//------------------------------1 stmt->setInt(3,""); //------------------------------2 stmt->execute(); ....//省略 } ....//省略 }
很明显,这个函数完全依赖于我的存储过程。
如果存储过程中的参数个数和类型发生变化,那这个函数的1、2句将发生错误。
那么,我该怎么写,让这个函数能适应于所有的存储过程?
不胜感激!!!
暂时不能发布200分,之后会另加
------解决方案--------------------
存储过程的接收参数用自定义数组来存储;
------解决方案--------------------
- SQL code
貌似不行,数据类型和参数个数都不是确定
------解决方案--------------------
二维数组,存放参数和类型;
ExecuteSQL()函数添加数组的初始化;然后传送到procedure中解析;
------解决方案--------------------
------解决方案--------------------
我的异常网推荐解决方案:oracle存储过程,http://www..net/oracle-develop/177537.html