Witam wszystkich..
Chciałbym prosić o pomoc w rozwiązaniu problemu. Bardzo chciałem zrobić funkcję która zwraca cały kursor i teoretycznie mi się to udało. Problem w tym że nie wiem jak to teraz uruchomić w bloku anonimowym.. tzn uruchomiłem i wyświetliło mi cały ostatni wiersz kursora. Pytanie brzmi jak się teraz odwołać do paczki i kursora aby w bloku anonimowym wyświetlić wszystkie wiersze zaczytane z kursora.
to jest wynik wykonania bloku anonimowego:
EMPLOYEE_ID:13 MANAGER_ID:10 FIRST_NAME:Klaudia LAST_NAME:Prewał SALARY:47002
gdzie EMPLOYEE_ID:13 jest ostatnim w całej tabeli.
create or replace PACKAGE emp_admin AS
--zmienne globalne
TYPE EmpRecTyp IS RECORD (EMPLOYEE_ID NUMBER(38,0),MANAGER_ID NUMBER(38,0),FIRST_NAME VARCHAR2(10 BYTE),LAST_NAME VARCHAR2(10 BYTE),TITLE VARCHAR2(20 BYTE),SALARY NUMBER(6,0));
CURSOR desc_salary RETURN EmpRecTyp;
--deklaracja funkcji
FUNCTION nth_highest_salary RETURN EmpRecTyp;
END emp_admin;
create or replace PACKAGE BODY emp_admin AS
--pełna deklaracja kursora
CURSOR desc_salary RETURN EmpRecTyp IS
SELECT * FROM MORE_EMPLOYEES;
--pełna deklaracja funkcji
FUNCTION nth_highest_salary RETURN EmpRecTyp IS
emp_rec EmpRecTyp;
BEGIN
OPEN desc_salary;
LOOP
FETCH desc_salary INTO emp_rec;
EXIT WHEN desc_salary%NOTFOUND;
END LOOP;
CLOSE desc_salary;
RETURN emp_rec;
END nth_highest_salary;
END emp_admin;
DECLARE
v_variable MORE_EMPLOYEES%ROWTYPE;
BEGIN
v_variable := EMP_ADMIN.NTH_HIGHEST_SALARY;
DBMS_OUTPUT.PUT_LINE('EMPLOYEE_ID:'||v_variable.employee_id||' MANAGER_ID:'||v_variable.manager_id||' FIRST_NAME:'||v_variable.first_name||' LAST_NAME:'||v_variable.last_name||' SALARY:'||v_variable.salary);
END;