2015-11-29 33 views
0

我想知道我怎樣才能得到一個消息,如果我的薪水SUM爲0。請檢查我的代碼:SumSalary 0不顯示

DECLARE  
    v_sum_sal NUMBER(10,2); 
    v_deptno NUMBER NOT NULL := 10;   
BEGIN 
    SELECT SUM(salary) -- group function 
    INTO v_sum_sal FROM employees 
    WHERE  department_id = v_deptno; 

    IF v_sum_sal = 0 THEN 
DBMS_OUTPUT.PUT_LINE ('You have selected 0 employees '); 
else 
    DBMS_OUTPUT.PUT_LINE ('The sum of salary is ' || v_sum_sal); 
    end if; 
END; 

回答

1

如果沒有匹配,那麼sum()回報NULL ,不是0.這裏有兩種方法。

查詢更改爲:

SELECT COALESCE(SUM(salary), 0) -- group function 
    INTO v_sum_sal FROM employees 
    WHERE department_id = v_deptno; 

或者,改變if到:

IF v_sum_sal IS NULL THEN 
+0

它工作。感謝您的幫助! – Kaloyan

0

這裏什麼是你的代碼發生的事情,如果你的表犯規包含部門ID您提供。它會給出一個NULL輸出。所以如果你把一個異常處理條件,它會像魅力一樣工作。

DECLARE 
    v_sum_sal NUMBER(10,2); 
    v_deptno NUMBER NOT NULL := 10; 
BEGIN 
    BEGIN 
    SELECT SUM(salary) -- group function 
    INTO v_sum_sal 
    FROM employees 
    WHERE department_id = v_deptno; 
    EXCEPTION 
    WHEN NO_DATA_FOUND THEN 
    v_sum_sal:=0; 
    END; 
    IF v_sum_sal = 0 THEN 
    DBMS_OUTPUT.PUT_LINE ('You have selected 0 employees '); 
    ELSE 
    DBMS_OUTPUT.PUT_LINE ('The SUM OF salary 
IS 
' || v_sum_sal); 
    END IF; 
END;