VB6调用oracle存储过程的一个小问题
2011-05-20 14:54
162 查看
10年前用VB6编写的程序,不停的修修改改,一直用到现在,而且将继续使用几年。
本人最近接手了这个程序,除了“悲催”,实在想不出来其他词来形容本人的心情了。
废话略过,最近碰到一个调用存储过程的问题,耗费了一些时间,最终解决了,把结果贴出来,如果还有人像本人一样在用VB6,希望能有所帮助。
这个古老的程序,在调用oracle存储过程时,根据配置可使用不同的数据引擎,有2种可选
Provider=OraOledb.Oracle.1
Provider=MSDAORA.1
调用存储过程的代码如下
'cnDb.ConnectionString = "Provider=MSDAORA.1;… "
cnDb.Open
cmd.ActiveConnection = cnDb
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "procName"
cmd.Parameters("para1") =para1
cmd.Parameters("para2") =para2
cmd.Execute 'Provider=OraOledb.Oracle.1时,在这里报错
paraOut = cmd("out") ' 输出参数是string类型
如果使用“Provider=OraOledb.Oracle.1”,调用存储过程时报错“提供程序不能导出参数信息,没有调用 SetParameterInfo”。
如果使用“Provider=MSDAORA.1”,则调用存储过程正常。
查阅了一些资料,修改为下面的代码,使用2种方式都可以正常调用
'cnDb.ConnectionString = "Provider=MSDAORA.1;… "
cnDb.Open
cmd.ActiveConnection = cnDb
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "procName"
cmd.Parameters.Append cmd.CreateParameter( "para1", adLongVarChar, adParamInput, 1000, para1)
cmd.Parameters.Append cmd.CreateParameter( "para2", adLongVarChar, adParamInput, 1000, para2)
cmd.Execute 'Provider=OraOledb.Oracle.1时,不报错了
paraOut = cmd("out") ' 输出参数是string类型
如果存储过程返回结果集,情况更复杂,参见这里:http://topic.csdn.net/t/20060323/15/4634977.html
本人最近接手了这个程序,除了“悲催”,实在想不出来其他词来形容本人的心情了。
废话略过,最近碰到一个调用存储过程的问题,耗费了一些时间,最终解决了,把结果贴出来,如果还有人像本人一样在用VB6,希望能有所帮助。
这个古老的程序,在调用oracle存储过程时,根据配置可使用不同的数据引擎,有2种可选
Provider=OraOledb.Oracle.1
Provider=MSDAORA.1
调用存储过程的代码如下
'cnDb.ConnectionString = "Provider=MSDAORA.1;… "
cnDb.Open
cmd.ActiveConnection = cnDb
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "procName"
cmd.Parameters("para1") =para1
cmd.Parameters("para2") =para2
cmd.Execute 'Provider=OraOledb.Oracle.1时,在这里报错
paraOut = cmd("out") ' 输出参数是string类型
如果使用“Provider=OraOledb.Oracle.1”,调用存储过程时报错“提供程序不能导出参数信息,没有调用 SetParameterInfo”。
如果使用“Provider=MSDAORA.1”,则调用存储过程正常。
查阅了一些资料,修改为下面的代码,使用2种方式都可以正常调用
'cnDb.ConnectionString = "Provider=MSDAORA.1;… "
cnDb.Open
cmd.ActiveConnection = cnDb
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "procName"
cmd.Parameters.Append cmd.CreateParameter( "para1", adLongVarChar, adParamInput, 1000, para1)
cmd.Parameters.Append cmd.CreateParameter( "para2", adLongVarChar, adParamInput, 1000, para2)
cmd.Execute 'Provider=OraOledb.Oracle.1时,不报错了
paraOut = cmd("out") ' 输出参数是string类型
如果存储过程返回结果集,情况更复杂,参见这里:http://topic.csdn.net/t/20060323/15/4634977.html
相关文章推荐
- 【转】堆栈跟踪中收到一个UnhandledExceptionFilter调用时,如何查找问题异常堆栈
- 2013-5-25 1. “已有打开的与此命令相关联的 DataReader,必须首先将它关闭。"问题. 上周在项目开发中,遇到这样的一个问题,在前台展示页,两个WebPart调用后台的AP
- Cmake调用NSIS(一个可执行文件,其实就是一个编译器)编译NSIS脚本问题研究
- 关于delete一个派生类时调用基类定义的virtual destructor的问题
- Spring AOP代理机制以及方法调用在同一个类的另一个方法的问题
- 关于JAVA调用ORACLE存储过程时,传入动态参数作为in语句条件的问题
- 微信小程序外部API调用方法,遇到的一个小问题
- 在同一个类中调用另一个方法没有触发 Spring AOP 的问题
- WebBrowser加载一个URL被多次调用DocumentCompleted 的问题解决方案<转>
- Delphi7下用dbExpress调用Oracle存储过程(返回数据集)的一个简单示例和调试过程
- 开发问题-声明一个类时调用它里面的方法发现不能调用
- 关于JAVA调用ORACLE存储过程时,传入动态参数作为in语句条件的问题
- HA切换问题: 选主+(切换虚拟ip,启动其他服务 或者 开始调用下游) 无法操作另外一个挂掉的主的情况,脑裂问题
- HTC ONE里面一个非常奇怪的问题。。。调用kSOAP出错
- 一个关于Cookie的访问与调用问题
- 在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
- SQL一个存储过程调用另一个存储过程 获得返回值问题
- 关于Delphi下子类调用父类虚函数的一个问题
- EOS project 中 的一个 jsp 文件中 调用 javascript函数的问题
- webservice 应用的问题(vb6调用,soapheader)