SQL Oracle PROCEDURE问题

时间:2019-01-05 19:12:06

标签: sql database oracle procedure

我在程序上有问题,我找不到解决方案。结束循环出错。

您有解决的主意吗?

请找到带有错误屏幕截图的附件。

CREATE OR REPLACE PROCEDURE PR_GEN_TRANSAKCJI
IS
KL NUMBER;
ZN NUMBER;
L_POZ NUMBER;
POK NUMBER;
CE NUMBER;
CZP NUMBER;
DNI NUMBER;
POZ NUMBER;


BEGIN

KL :=FN_LOSUJ_KLIENTA();
SELECT ZNIZKA
INTO ZN
FROM KLIENT
WHERE ID_KLIENTA=KL;

INSERT INTO FAKTURA (ID_FAKTURY, DATA_WYSTAWIENIA_FAKTURY, WARTOSC_FAKTURY, 
WARTOSC_FAKTURY_PO_ZNIZCE, ID_KLIENTA, WARTOSC_ZNIZKI) VALUES
(SEQUENCE_FAKTURA.NEXTAL, SYSDATE, 0, 0, KL, ZN);

 LICZNIK :=0;
L_POZ :=FN_LOSUJ_POKOJ();
SELECT CENA_ZA_DOBE
INTO CE
FROM TYP_POKOJU, POKOJ
WHERE POK=POKUJ.NR_POKOJU AND POKOJ.ID_TYPU_POKOJU = 
TYP_POKOJU.ID_TYPU_POKOJU;
DNI :=FN+LOSUJ(1,5);
CZP :=DNI*CE;
POZ :=LICZNIK + 1;

INSERT INTO FAKTURA_DETALE (POZYCJA, CENA_ZA_POKOJ, ID_FAKTURY, NR_POKOJU, 
LICZBA_DNI) VALUES (POZ, CZP, SEQUENCE_FAKTURA.CURRVAL, POK, DNI);
LICZNIK := LICZNIK = 1;
EXIT WHEN LICZNIK > L_POZ;
END LOOP;
END;
/

谢谢您的帮助!

enter image description here

1 个答案:

答案 0 :(得分:0)

您应该尝试SHOW ERRORS来调试输出,因为它是最方便的功能 您错过了LOOP开始语句来解决此问题,因为在您的代码中只有END LOOP可见

Idk您想在哪里开始循环。您可能正在猜测某个值,该值与在begin本身开始时操作的其他值相关,因此可以尝试将BEGIN LOOP ..... END LOOP

放进去