sum()后,如果没有记录则为0的,当然,%found都是ture了
改变你的判断条件。
改变你的判断条件。
解决方案 »
- 只有数据文件,如何恢复
- 存储过程中如何使用索引?
- Oracle 中使用表分区,让系统自动生成表分区的名称,那么怎么通过语句查出,分区的名称?
- 帮忙看看PRO C C++,为什么说缺少入口点。感觉没有错
- PLS-00103: Encountered the symbol "VARCHAR2" when expecting one of the
- oracle中查询行号的问题!急!在线等!
- 急!急!快来帮帮忙
- 监听程序当前无法识别连接描述符中请求的服务
- 一个关于临时表的问题
- 关于Oracle8用密码的问题
- ORACLE系统表在存储过程中使用的权限问题!
- 请教:从sql server2000导出数据到oracle8i,表名是大小写混写的,到oracle也是,所以出了问题。
我debug了, 如果没查到,real_emp的值为null,可是我判断
if real_emp=null then
real_emp:=0;
end if;
也不行呀?
if real_emp=null then
//这里的语句不会执行的,而且也是多余的。
end if;
你不如直接写:
select sum(RESH_QTY) into real_emp from real_shipping where RESH_MONTH between shipping_smonth and shipping_emonth;
你的那个游标也是多余的。
根本就不会有显示,只有查到了纪录才会显示出sum的值,没查到什么都不会显示!
real_emp根本就是空值BEGIN
DECLARE
real_emp NUMBER;
BEGIN
select SUM(SAFO_QTY) into real_emp from sales_forecast
where SAFO_MONTH='200302' and SAFO_BUVE_CODE='PCK20030304'; DBMS_OUTPUT.PUT_LINE(real_emp);
END;
END;
if real_emp is null then
real_emp:=0;
end if;TO:lile_zhy(阿郎)
别人帮你解决问题,不敢怎么样,还是礼貌一点把
可以这么写
select decode(SUM(SAFO_QTY),null,0,SUM(SAFO_QTY)) into real_emp from sales_forecast
where SAFO_MONTH='200302' and SAFO_BUVE_CODE='PCK20030304';
w_tsinghua() 的方法可以,我还有另外一个方法
select NVL(SUM(SAFO_QTY),0 ) into tt from sales_forecast
where SAFO_MONTH='200302' and SAFO_BUVE_CODE='PCK20030304';
同样可以实现,我总结了几种方法1. select NVL(SUM(SAFO_QTY),0 ) into tt from sales_forecast
where SAFO_MONTH='200302' and SAFO_BUVE_CODE='PCK20030304';
根本不用判断,有就有,没有就是02.有GROUP BY 或纯粹的SELECT 时可以用%NOTFOUND 去判断
open reality_shipping;
fetch reality_shipping into real_emp;
if reality_shipping%notfound then
real_emp:=0;
end if;
close reality_shipping;
Nvl(sum(RESH_QTY),0)
这样应该可以搞定的。