各位大虾: 
    小虾今天写了一段SQL SERVER 2000 连接oracle的代码,竟出现如下错误
      OLE DB 提供程序 'MSDAORA' 报错。 
  [OLE/DB provider returned message: ORA-01476: 除数为 0
   ]这是什么原因 啊?谢谢了 代码如下:
select a.phone_num,a.emp_id,a.busi_code,a.phone_status,'' as product_type ,a.intime,b.mp3_record_file,b.SOURCE as Data_Resource,b.call_log,0,'无'
from
(
select * from 
BUSI_WZ..BUSI_TRADITION.KF_DIAL--为SQL SERVER 2000 到oracle的一个链接 
WHERE convert(char(10),intime,120)=convert(char(10),getdate()-1,120)
and phone_status  in ('拒绝' ,'派单') ) a,(SELECT *
FROM SHCALL..CALLCENTER1.CALL_LOG_ZJ 
where   convert(char(10),begin_time,120)=convert(char(10),getdate()-1,120))b
where a.phone_num=b.callee_num and convert(char(13),intime,120)=convert(char(13),begin_time,120)
and LOWER(a.emp_id)=LOWER(b.emp_id) and  a.BUSI_CODE='31' and b.busi_type='31'
其中 BUSI_WZ..BUSI_TRADITION.KF_DIAL为SQL SERVER 2000 到oracle的一个链接 

解决方案 »

  1.   

    一般来说,我会在除法算式前面加个decode
    假设是a/b
    decode(b,0,null,a/b) 这样如果b为0,输出null,不为0输出a/b 
    就不会报错了
      

  2.   

    使用Oracle提供的OLEDB Provider,微软的未经过认证
      

  3.   

    肯定是经过转换后造成的,是转换BUG。。
      

  4.   

    可以用exception处理。。这样语句能执行。而且会打印在哪里出现的错
      

  5.   

    顶一下!另外,执行以下统计表空间使用率脚本,有时也能遇见这个报错,在大部分机器上不报错,请教下高手为什么?SELECT F.TABLESPACE_NAME TabspaceName, D.TT_GB Total_GB, D.TT_GB-F.FTT_GB Used_GB, CONCAT(ROUND((D.TT_GB-F.FTT_GB)/D.TT_GB*100, 0),'%') "Usedpercent%",F.FTT_GB Free_GB FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024*1024), 2) FTT_GB FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F,(SELECT DD.TABLESPACE_NAME,ROUND(SUM(DD.BYTES)/(1024*1024*1024), 2) TT_GB FROM DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 4 DESC;
      

  6.   

    Oracle 与 Sql server的转换函数有区别吧。