VB6调用Oracle过程错误

VB6调用Oracle过程错误,oracle,vb6,odbc,Oracle,Vb6,Odbc,我们有一个lagacy VB6应用程序,它使用ODBC连接到Oracle 10g DB。我们正在SOE上升级到11g驱动程序,部分应用程序出现问题。与9.2驱动程序配合使用效果良好 Oracle客户端10g/11g不喜欢小写调用。这一点很明显,成功的调用是大写的,失败的调用是小写的。进一步的测试表明,以下代码行: Set Qry = grdoEnterprise.CreateQuery("", " { CALL ep_admin_revoke_role( ?,?,?,? ) } ") 失败了。

我们有一个lagacy VB6应用程序,它使用ODBC连接到Oracle 10g DB。我们正在SOE上升级到11g驱动程序,部分应用程序出现问题。与9.2驱动程序配合使用效果良好

Oracle客户端10g/11g不喜欢小写调用。这一点很明显,成功的调用是大写的,失败的调用是小写的。进一步的测试表明,以下代码行:

Set Qry = grdoEnterprise.CreateQuery("", " { CALL ep_admin_revoke_role( ?,?,?,? ) } ")
失败了。。。但当改为

Set Qry = grdoEnterprise.CreateQuery("", " { CALL EP_ADMIN_REVOKE_ROLE( ?,?,?,? ) } ")
在执行查询之前不会抛出错误本身。但是,在调试时,可以在CreateQuery()阶段检测到失败,因为生成的rdoQuery对象有0个参数(而它应该有多个参数,在本例中为4)


有人在使用VB6和Oracle 10g/11g ODBC驱动程序时遇到过这个问题吗?

是的,Oracle太挑剔了。您将存储过程名称更改为大写的解决方案是百分之百正确的。

是的,Oracle太挑剔了。将存储过程名称更改为大写的解决方案是百分之百正确的