【问题标题】:SQL Oracle issue with PROCEDURE与 PROCEDURE 相关的 SQL Oracle 问题
【发布时间】:2019-01-05 19:12:06
【问题描述】:

我有一些程序问题,我找不到解决方案。结束循环的一些错误。

你有什么解决办法吗?

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

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;
/

感谢您的帮助!

【问题讨论】:

  • 我没有看到 END LOOP 对应的 LOOPEND LOOP 应该结束什么?
  • 好的,我明白了,但是当我在函数之前添加循环时,这个过程不理解 LOOP。
  • 这就是你编写丑陋代码时得到的结果。如果你正确地格式化它,缩进,你会看到 END LOOP 没有它的对 - beginning 的循环。您说您添加了 LOOP 关键字,但又遇到了另一个错误。好吧,是你知道这段代码应该做什么,它的哪一部分应该循环执行。我们其他人没有。

标签: sql database oracle procedure


【解决方案1】:

您应该尝试SHOW ERRORS 来调试您的输出,因为它是最方便的功能,没关系 您错过了 LOOP start 语句修复此问题,因为您的代码中只有 END LOOP 可见

您想从哪里开始循环。猜测您正在退出某个值,该值与开始时操纵的其他值相关,因此可以尝试将BEGIN LOOP ..... END LOOP

【讨论】:

  • 我做到了,我的代码有更多错误,我想我需要准备新程序:P
猜你喜欢
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-21
相关资源
最近更新 更多