例如,我們有僱主工資和部門基於emp表。PL/SQL定義用於求和的select語句If和循環
在SQL中,我們可以僅僅通過這樣
SELECT SUM(SAL) FROM EMP WHERE DEPTNO = 20 ; //Lets put it we finding sum for dept 20.
但是,在其他的PL/SQL,我想我是錯的語法檢索每個部門的工資總和。我正在使用光標來存儲所有數據。在我的if語句中,在下面的循環中,我嘗試了我的邏輯
if deptno = 20 THEN
totalSalary = sum(salary);
DBMS_OUTPUT.PUT_LINE('Department : 20' || total Salary);
這是我的實際代碼。
DECLARE
msal emp.salary%TYPE;
mdept emp.departmentNo%TYPE;
new_salary number(10,2);
CURSOR E1 IS select salary , departmentNo from emp;
BEGIN
OPEN E1;
LOOP
FETCH E1 into msal , mdeptno;
IF mdeptno = 20 THEN
---- I cant seems to find the right logic here to print out the total sum for department 20---
END IF;
EXIT WHEN E1%NOTFOUND;
END LOOP;
CLOSE E1;
END;
/
在此先感謝
解決這個問題,您可以使用[遊標FOR循環(http://docs.oracle.com/database/121/LNPLS/cursor_for_loop_statement.htm)建設簡化循環,節省了一堆的代碼。但對於單行查詢,無論如何都不需要循環。 –