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邦定存储过程的参数
代码如下:
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中解析;

------解决方案--------------------
探讨
我想occi应该会考虑到动态调用这个问题
只是现在不知道应该用occi的哪些函数去屏蔽参数类型和个数不同所带来的差异

------解决方案--------------------
探讨
方法一:
对于你的这个接口,要求调用者除了传入一个SQL语句之外,再传入一个数组,这个数组里面是一些枚举值,代表参数化查询语句里面的参数的类型;
方法二:
存储过程也是一个对象,不管什么数据库,应该都会有一张预先生成好了的表(比如叫SysInfo),用来保存后来用户创建的对象(比如自定义函数,存储过程等)的属性,你查询这张表,就可以知道存储过程(存储过程名字从SQL语句里面动态获取)的参数类型了。

我的异常网推荐解决方案:oracle存储过程,http://www..net/oracle-develop/177537.html