Problem z funkcją pl/sql

Problem z funkcją pl/sql
PP
  • Rejestracja:prawie 13 lat
  • Ostatnio:ponad 4 lata
  • Postów:47
0

Cześć,
Prośba o pomoc co w tej funkcji mam nie tak. Z góry dziękuję za pomoc.

Funkcja ma dla podanego nazwiska prowadzącego zwracać liczbę przedmiotów przez niego prowadzonych.

Kopiuj
CREATE OR REPLACE function liczba_przedmiotow(n in wykladowca.nazwisko%type) 
    return varchar2 IS
    dane varchar2(30);
begin

    select count(przedmiot.id_przedmiot) as ile, wykladowca.id_wykladowca into dane
    from przedmiot, wykladowca, zajecia
    where przedmiot.id_przedmiot = zajecia.id_przedmiot
    and zajecia.id_wykladowca = wykladowca.id_wykladowca
    --and wykladowca.imie = i
    and wykladowca.nazwisko = n
    group by wykladowca.id_wykladowca
    order by ile DESC;
    
    return dane;

end liczba_przedmiotow;

dostaję błąd:

Kopiuj
Function LICZBA_PRZEDMIOTOW compiled

LINE/COL  ERROR
--------- -------------------------------------------------------------
6/5       PL/SQL: SQL Statement ignored
7/5       PL/SQL: ORA-00947: niewystarczająca liczba wartości
Errors: check compiler log

edytowany 1x, ostatnio: ProProgramer
YA
  • Rejestracja:prawie 10 lat
  • Ostatnio:2 dni
  • Postów:2370
1
  1. Wyciągasz 2 wartości (ile, id_wykladowca) do jednej zmiennej (dane):
    select count(przedmiot.id_przedmiot) as ile, wykladowca.id_wykladowca into dane

  2. Po co ORDER BY?

  3. Skoro robisz ORDERA to może spodziewasz się większej ilości rekordów? Wówczas SELECT ... INTO wywali Ci się.

edytowany 1x, ostatnio: yarel

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.