我使用的是oracle9i的数据库,进行多表查询时,我选择一个表作为主表,想把主表中的某些字段与其他表进行连接,就算外部的表中没有某项数据,主表中的数据也能显示出来,不过那个字段显示为空就是了。
sql语句如下:
select
zmzd.zmdm,zmzd.zmdbm,zmzd.czxz,zmzd.zmflag,zmzd.zmqc,zmzd.zmpym,
zmzd.ssljdm,ljzd.ljjc,zmzd.ssfjdm,fjzd.fjjc,zmzd.ssyybdm,yybzd.yybmc,
zmzd.ssfgsdm,fgszd.fgsjc,zmzd.czzk,zmzd.xlxz,zmzd.szss,zmzd.ccflag,
zmzd.qzflag,zmzd.jzxjb,zmzd.tlxm,zmzd.gxdate,zmzd.xgflag from zmzd,ljzd,fjzd,yybzd,fgszd where zmzd.ssljdm=ljzd.ljdm(+) and zmzd.ssfjdm=fjzd.fjdm(+)
and zmzd.ssyybdm=yybzd.yybdm(+) and zmzd.ssfgsdm=fgszd.fgsdm(+)前一段时间这句sql还能运行,但是今天突然就不行了,如果删掉最后一个(+),就能查询出数据,问题是不是跟fgszd表有关系?有哪些情况会造成这种问题?
万分感谢!!!
sql语句如下:
select
zmzd.zmdm,zmzd.zmdbm,zmzd.czxz,zmzd.zmflag,zmzd.zmqc,zmzd.zmpym,
zmzd.ssljdm,ljzd.ljjc,zmzd.ssfjdm,fjzd.fjjc,zmzd.ssyybdm,yybzd.yybmc,
zmzd.ssfgsdm,fgszd.fgsjc,zmzd.czzk,zmzd.xlxz,zmzd.szss,zmzd.ccflag,
zmzd.qzflag,zmzd.jzxjb,zmzd.tlxm,zmzd.gxdate,zmzd.xgflag from zmzd,ljzd,fjzd,yybzd,fgszd where zmzd.ssljdm=ljzd.ljdm(+) and zmzd.ssfjdm=fjzd.fjdm(+)
and zmzd.ssyybdm=yybzd.yybdm(+) and zmzd.ssfgsdm=fgszd.fgsdm(+)前一段时间这句sql还能运行,但是今天突然就不行了,如果删掉最后一个(+),就能查询出数据,问题是不是跟fgszd表有关系?有哪些情况会造成这种问题?
万分感谢!!!
try:variable v_cur refcursor;
begin
open :v_cur for
select
zmzd.zmdm,zmzd.zmdbm,zmzd.czxz,zmzd.zmflag,zmzd.zmqc,zmzd.zmpym,
zmzd.ssljdm,ljzd.ljjc,zmzd.ssfjdm,fjzd.fjjc,zmzd.ssyybdm,yybzd.yybmc,zmzd.ssfgsdm,fgszd.fgsjc,zmzd.czzk,zmzd.xlxz,zmzd.szss,zmzd.ccflag, zmzd.qzflag,zmzd.jzxjb,zmzd.tlxm,zmzd.gxdate,zmzd.xgflag
from zmzd,ljzd,fjzd,yybzd,fgszd
where zmzd.ssljdm=ljzd.ljdm(+) and zmzd.ssfjdm=fjzd.fjdm(+)
and zmzd.ssyybdm=yybzd.yybdm(+) and zmzd.ssfgsdm=fgszd.fgsdm(+);
end;
/
print v_cur;
很奇怪,这里面的原因我也不清楚
同样的语句,放在pl/sql块里面就没有问题了。