hur.cn - 华软网

 热门搜索

pb10.5调用存储过程出现的问题,是否pb的bug?????

  作者:未知    来源:网络    更新时间:2019/1/5
环境:windows2000 + pb10.5 +oracle(windows)
存储进程:(前往小数或0)
create or replace Procedure GetNum(d_fl out number)  is
begin
  select  0.00  into d_fl  from  dual;
end;

  
调用:
dec s
DECLARE GETproc  PROCEDURE FOR  GetNum() using sqlca;
execute GETproc;
FETCH   GETproc INTO  :s;
if sqlca.sqlcode=-1 then
close GETProc ;
messagebox("系统毛病","调用存储进程失利!~r~n"+sqlca.sqlerrtext)
end if
Close GetProc;

发现奇怪的问题:
   1、若后台前往为0,前台若用dec,Fetch时会报Decimal conversion error,PowerBuilder supports only 18 decimal digits;
                    若前台用string,则前往空.
   2、若后台前往小数0.58,不论前台用dec or string,都会自动去掉一个小数位,即前往0.5。
      0.008====>0
      0.678====>0.67
      0.6788===>0.678
   3、pb6.5下一切正常.

pb10.5连接所用驱动:
DBMS=O84 Oracle8/8i (8.x.4+)                      
pb6.5连接所用驱动:
DBMS=O73 ORACLE 7.3
 


------华软网友回答------
高手解决呀
------华软网友回复------
很失望,居然没有人能解决或知道这个问题!斑竹??????
------华软网友回复------
需要一步步确定问题啊,先用string
select  0.00  into d_fl  from  dual;
改成
select  '0.00'  into d_fl  from  dual;

d_fl out number

d_fl out varchar2
看看

顺便说一下,你用函数多好啊,
横竖最后return的
你在pb只需
select fun_name () into :your_var from dual;
就能够了。
------华软网友回复------
确实是 PB 的 Bug, 咱们也遇到这个问题,没措施,只有改写了。
------华软网友回复------
另有一个措施,如果是 Oracle 8i, 在Oracle 8i 的客户端打上一个补钉就能够了,详细补钉编号不记得了。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。