Dobrý večer, mám potíže s procedurou uvedenou níže. Po zadání čísla objednávky by měla zobrazit jméno
zákazníka, který si objednal, atd. Kompilace proběhne s hláškou: provádění kódu bylo dokončeno s varováním.
Myslím, že problém (ten, který si uvědomuji) je, že po načtení čísla objednávky do proměnné
v_cislo_objednavky se hodnota dále nedosazuje do selectů, kde je tato proměnná dále používána. Zkoušela jsem hledat, jak toto vyřešit, ale marně. V ukázkových příkladech jsem vždy našla mezi begin a end vždy jen jeden select, kde vše proběhlo správně. Mohl by mi prosím někdo poradit, jak upravit můj kód? Popř. mě upozornit na jinou chybu, která hlášku způsobuje. Ošetření výjimek si prosím nevšímejte, ty ještě budu upravovat. Předem děkuji
Kristina
PS: Nejsem v problematice moc poučená, tak to prosím zohledněte.
CREATE OR REPLACE
PROCEDURE objednavka(
v_cislo_objednavky IN INT)
DECLARE
v_zakaznik CHAR(60);
v_cena INT;
v_zamestnanec CHAR(60);
v_mnozstvi INT;
BEGIN
v_cislo_objednavky := &Zadejte_cislo_objednavky;
SELECT rtrim(zak.jmeno)
||' '
||rtrim(zak.prijmeni)
INTO v_zakaznik
FROM zakaznik zak
JOIN objednavky o
ON zak.id_zakaznika = o.id_zakaznika
WHERE o.id_objednavky = v_cislo_objednavky;
SELECT SUM(mnozstvi * cena)
INTO v_cena
FROM objednavka_detail od
JOIN produkty p
ON od.id_produkt = p.id_produkt
WHERE od.id_objednavky = v_cislo_objednavky;
SELECT z.jmeno
||' '
|| z.prijmeni
INTO v_zamestnanec
FROM zamestnanci z
JOIN objednavky o
ON z.id_zamestnance = o.id_zamestnance
WHERE o.id_objednavky = v_cislo_objednavky;
SELECT SUM(mnozstvi)
INTO v_mnozstvi
FROM objednavka_detail od
JOIN produkty p
ON od.id_produkt = p.id_produkt
WHERE od.id_objednavky = v_cislo_objednavky;
dbms_output.put_line(v_zakaznik,v_cena);
EXCEPTION
WHEN no_data_found THEN
dbms_output.put_line('Zadna data');
WHEN too_many_rows THEN
dbms_output.put_line('Vystup musi byt skalarni');
WHEN value_error THEN
dbms_output.put_line('Chybna hodnota');
END;