Nie
Podam
Student,
Politechnika Łódzka
Temat: PL/SQL kursor i procedura
WitamDopiero 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