VC程序访问Oracle数据库的存储过程时的问题解决方案_Oracle_数据库_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 数据库 > Oracle > VC程序访问Oracle数据库的存储过程时的问题解决方案

VC程序访问Oracle数据库的存储过程时的问题解决方案

 2013/8/10 1:24:04    程序员俱乐部  我要评论(0)
  • 摘要:在用VC开发的应用程序中,访问Oracle数据库的存储过程中出现了问题如下:在脚本里面调用存储过程的时候,如果用execmysp就报告"无效字符";如果用{callmysp}则报告“游标错误”奇怪的是,用一个古老的版本的平台程序则可以用{callmysp}完成调用。原因排查:最初的se程序在访问数据库接口的时候只区分select开头的语句和非select开头的语句。对于非select开头的语句一律用odbc的CDatabase:
  • 标签:程序 解决方案 解决 问题解决 ORA 问题 数据库 数据 过程 存储过程 Oracle Oracle数据库

在用VC开发的应用程序中,访问Oracle数据库存储过程中出现了问题如下:在脚本里面调用存储过程的时候,如果用exec mysp 就报告"无效字符";如果用 {call mysp} 则报告“游标错误” 奇怪的是,用一个古老的版本的平台程序则可以用 {call mysp} 完成调用。

原因排查:

最初的se程序在访问数据库接口的时候只区分select 开头的语句和非select开头的语句。对于非select开头的语句一律用odbc的 CDatabase::ExecuteSQL函数处理;对于select开头的语句使用 CRecordSet::Open处理。所以{call mysp}语句是用CDatabase::ExecuteSQL处理的,没有问题。

新版本的se为了处理call mysp的返回,使用了CRecordSet::Open来处理。这在微软的SqlServer下没有问题,但是在Oracle下就不行了。

解决方案:

在连接oracle数据库的时候,call mysp这样的语句不能用 crecordset::open处理,只能用cdatabase::executesql处理。

说明:exec mysp 一般只能用在数据库服务器自己的客户端里面,如sqlserver的 企业管理器或者oracle的sql plus ,不能用在c语音接口里面。而call mysp则可以用于任何场合。

关于在VC开发的程序里面访问Oracle数据库存储过程的问题的原因分析及解决方案就介绍到这里了,如果您想了解更多关于Oracle数据库的知识,可以看一下这里的文章:http://database.51cto.com/oracle/,相信一定可以带给您收获的!

发表评论
用户名: 匿名