Nie Podam

Nie Podam Student,
Politechnika Łódzka

Temat: PL/SQL kursor i procedura

Witam



Dopiero zaczynam kodzenie w PL/SQL. Mam problem z kursorem i procedura. Tabele w zadaniu:



CREATE TABLE KOSZYKI (
k_id_koszyka NUMBER PRIMARY KEY,
k_data_zakupu DATE DEFAULT SYSDATE NOT NULL,
k_data_dostarczenia DATE,
k_czy_faktura CHAR(1) CHECK (k_czy_faktura IN ('T','N')),
CHECK (k_data_dostarczenia >= k_data_zakupu)
);

CREATE TABLE PRODUKTY (
p_id_produktu NUMBER PRIMARY KEY,
p_k_id_koszyka NUMBER NOT NULL REFERENCES KOSZYKI(k_id_koszyka) ON DELETE CASCADE,
p_lp NUMBER NOT NULL,
p_nazwa VARCHAR(35),
p_ilosc NUMBER,
p_cena_jednostkowa NUMBER(10,2),
p_rabat NUMBER
);



Zadanie z kursorem obejmuje stworzenie parametru sparametryzowanego, który sprawdza czy jest dany produkt oraz czy koszyk z nim został dostarczony. Jeśli nie drukuje liczbę dnia spóźnienia z ID. Produkt trzeba przekazać przez zmienną środowiskową i wyświetlić kursora za pomocą DBMS_OUTPUT.PUT_LINE()



O to moja próba:



SET SERVEROUTPUT ON

DECLARE



produkt VARCHAR2(100);

cursor jakis(produkt varchar2(100)) IS SELECT k_id_koszyka, k_czy_faktura FROM

Koszyki,Produkty WHERE k_id_koszyka=p_k_id_koszyka

AND p_nazwa=produkt;



BEGIN

:produkt:= 'Mleko UHT';

Open jakis(produkt);

Close jakis;

END;



Druga sprawa z procedurą, chodzi o naliczanie punktów za kupione produkty. O ile umiem napisać sam SQL to nie wiem jak ma wyglądać procedura. To co mam:



ALTER table koszyki

ADD (punkty_payback int default 0)

CREATE or REPLACE PROCEDURE NALICZ_PUNKTY_PAYBACK(rabat IN number) IS

BEGIN

SELECT koszyki.k_id_koszyka, trunc((sum(p_cena_jednostkowa*p_ilosc))/10) INTO punkty_payback FROM Koszyki,Produkty WHERE koszyki.k_id_koszyka=produkty.p_k_id_koszyka

GROUP BY koszyki.k_id_koszyka;

END NALICZ_PUNKTY_PAYBACK;

Proszę o pomoc
Pozdrawiam
jiuji