2013-11-27 2 views
0

와 PL/SQL 코드를 생성하지만, 여기에 내가 출력 각 직원의 총 판매 할 필요가 커서

ORA-06550: line 7, column 1: 
PLS-00103: Encountered the symbol "CURSOR" when expecting one of the following: 

:= (; not null range default character 
06550. 00000 - "line %s, column %s:\n%s" 
*Cause: Usually a PL/SQL compilation error. 
*Action: 

내 코드 오류를 잡, 나는 내 그룹화 기능과 관련이있다 생각하지만, 나는 분명히 존중받는 표에 대한 신분을 밝혀 냈습니다. 도움을 주시면 감사하겠습니다.

SET SERVEROUTPUT ON 
Declare 

v_employee_fname employees2.first_name%TYPE; 
v_employee_lname employees2.last_name%TYPE; 
v_amount all_sales.amount%TYPE 

CURSOR v_fullcount_cursor IS 
SELECT e2.first_name, e2.last_name, sum(alls.amount) as total_sales 
FROM employees2 e2 join all_sales alls on e2.employee_id = alls.EMP_ID 
GROUP BY e2.first_name, sum(alls.amount); 
BEGIN 
OPEN v_fullcount_cursor; 
LOOP 
FETCH v_fullcount_cursor 
INTO v_employee_fname, v_employee_lname, v_amount; 
EXIT WHEN v_fullcount_cursor%NOTFOUND; 
DBMS_OUTPUT.PUT_LINE(v_employee_fname ||' '|| v_employee_lname ||' total sales are $'|| 
v_amount); 
END LOOP; 
CLOSE v_fullcount_cursor; 
END; 
/
+0

루프의 암시 적 커서는 빠르고 간단하며 오류가 발생하기 쉽습니다. 더 이상'cursor' 키워드를 거의 사용하지 않아야합니다. –

답변

2

line6에서 세미콜론을 찾으 셨습니다.

v_amount all_sales.amount%TYPE; 

또 다른 문제는 group by 절입니다. employee firstname 및 lastname으로 데이터를 그룹화해야합니다. 이렇게 해보십시오 :

SET SERVEROUTPUT ON 
DECLARE 
    v_employee_fname employees2.first_name%TYPE; 
    v_employee_lname employees2.last_name%TYPE; 
    v_amount all_sales.amount%TYPE; 

    CURSOR v_fullcount_cursor IS 
    SELECT e2.first_name, e2.last_name, sum(alls.amount) AS total_sales 
    FROM employees2 e2 JOIN all_sales alls ON e2.employee_id = alls.EMP_ID 
    GROUP BY e2.first_name, e2.last_name; 

    BEGIN 
      OPEN v_fullcount_cursor; 
      LOOP 
       FETCH v_fullcount_cursor 
       INTO v_employee_fname, v_employee_lname, v_amount; 
       EXIT WHEN v_fullcount_cursor%NOTFOUND; 
       DBMS_OUTPUT.PUT_LINE(v_employee_fname ||' '|| v_employee_lname ||' total sales are $'|| v_amount); 
      END LOOP; 
      CLOSE v_fullcount_cursor; 
    END; 
/
+1

감사합니다. 친구, 고맙습니다. –

관련 문제