procedury błąd przy wywołaniu

0

Witam. Napisałem sobie taką o to procedure:

 CREATE OR REPLACE PROCEDURE wypisz(p_skad IN VARCHAR2)
IS
cursor c_trasa IS select * from trasy;
v_skad stacje.nazwa_stacji%type;

begin
select nazwa_stacji into v_skad from stacje;
for a IN c_trasa loop
IF p_skad = v_skad THEN
dbms_output.put_line('Z:'||v_skad||' Przez:'||a.przez||' Do:'||a.dokad);

END IF;
END LOOP;
END;

Mam problem dotyczący wywołania tej procedury.
Próbuje ją wywołać w ten sposób :

 begin 
wypisz('Warszawa');
end;

Otrzymuje błąd :
ORA-01422: exact fetch returns more than requested number of rows
Ktoś może mi pomóc?

0

Nie znam się dobrze na ORA, ale masz zmienną (nie tabelową i nie tablicową) v_skad, a ładujsze do niej zbiór krotek: SELECT nazwa_stacji INTO v_skad FROM stacje.
Albo musiałbyś to z kursora brać, albo ograniczyć, by jeden rekord zwróciło.

0

a możesz jakoś jaśniej? Niestety cały czas się z tym bawię ale nic nie wychodzi :/

CREATE OR REPLACE PROCEDURE wypisz(p_skad IN VARCHAR2)
IS

CURSOR c_stacja IS
SELECT nazwa_stacji FROM stacje;
CURSOR c_trasa IS SELECT * FROM trasy;
v_skad stacje.nazwa_stacji%TYPE;
 
BEGIN

OPEN c_stacja;
LOOP
FETCH c_stacja INTO v_skad;
EXIT WHEN c_stacja%NOTFOUND;
CLOSE c_stacja;
 
END LOOP;
FOR a IN c_trasa LOOP
IF (p_skad = v_skad) THEN
DBMS_OUTPUT.put_line('Przez:'||a.przez||' Do:'||a.dokad);
ELSE
DBMS_OUTPUT.put_line('Wybrana stacja nie istnieje!');
END IF;
END LOOP;
END;​ 

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