pl/sql kursory

0

Mam pare zadan z kursorem jakby ktos mi wyjasnil jak to ma wygladac z wykorzystaniem ponizszego przykladu to mysle, ze dalej bym sobie poradzil. Baza standardowa oracle hr employees

oto tresc pierwszego:

Zadeklaruj zmienne: v_dolna, v_gorna do przechowywania dolnej i górnej granicy zarobków
oraz v_id_od przechowującą identyfikator oddziału, nadaj ostatniej zmiennej wartość 50. Zadeklaruj
kursor do pobierania imienia, nazwiska, pensji pracowników z oddziału o identyfikatorze zapisanym
w zmiennej v_id_od. Napisz pętlę wyświetlającą imiona i nazwiska pracowników, których pensja

Probowałem coś tworzyć no ale oczywiście to jest błąd na błędzie:

BEGIN
  DECLARE
    CURSOR  pracownik_kursor  IS
    SELECT  first_name, last_name, salary,      	department_id
    FROM  employees ORDER BY   last_name;
    v_dolna  NUMHER(8);
    v_gorna  NUMBER(4);
    v_id_od  NUMBER(4)


  BEGIN
      OPEN  pracownik_kursor;
      FETCH  pracownik_kursor  INTO  v_dolna, v_gorna, 	v_id_od;
      WHILE  pracownik_kursor % FOUND
        LOOP
          SELECT  min(salary),
          INTO  v_dolna  FROM employees
	    WHERE  department_id = v_id_od;
          IF
            v_gorna>max(salary) from employees
         SELECT  max(salary),
          INTO  v_gorna  FROM employees
	    WHERE  department_id = v_id_od;
	    IF
            v_gorna>max(salary) from employees
	DBMS_OUTPUT.PUT_lINE('Wybrani Pracownicy z przedziału : '||  first_name,last_name);
          END IF;
         END LOOP;
   CLOSE  pracownik_kursor;
  END;
END;

0
  1. Polecam http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/cursor_for_loop_statement.htm#LNPLS1155
  2. Zamiast obliczac w kazdym obrocie kursora v_dolna i v_górna utwórz sobie na poczatku tabele tymczasowa z tymi wartosciami dla kazdego departamentu

1 użytkowników online, w tym zalogowanych: 0, gości: 1