使用system.data.oracle.client+Oracle 12C 客户端+存储过程out返回值被截断的解决办法
一.开发环境
信息系统是由asp.net 框架开发的,访问数据库的方式采用的是System.Data.Oracle.Client和ODP.NET的方式。
二.问题
而最近做系统迁移,数据库由原来的11g升级到了12C,迁移后大部分程序没有问题,只是在调用一个存储过程的时候,返回值采用的是out的方式,却怎么也无法正常返回,单独测试数据库是没有问题的,后来print log后发现返回值被从后面不定长的截断了,原来的逻辑是操作成功后给返回值变量赋值为1,例如c_successflag := 1,但是数据库存储过程赋值是正常的,但是在.net程序里获取的out返回值却是空。
三.解决方法
刚开始怀疑是数据库的问题,但是测试后发现用原来的机器连接12c的数据库却是正常的,于是怀疑是操作系统或oracle客户端的问题,那就卸载oracle 12c客户端(需要很多步骤),重新安装oracle11g,设置文件夹权限(不知道是否必要,反正是做了,增加了use在{oracle_home}r的权限),操作系统是windows 2016,又卸载重新装了asp.net 4.5(因为不能重新注册)。终于,问题解决
参考:
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号