ORA-00922: отсутствует или недействителен параметр при создании процедуры PL / SQL - PullRequest
0 голосов
/ 10 сентября 2018

Получение ошибки как ORA-00922: отсутствует или недействительна опция при создании процедуры PL / SQL, вот процедура.

CREATE OR REPLACE consession_calculate(item_ID IN NUMBER, CON_PRICE OUT NUMBER)
IS 
PRICE NUMBER;
BEGIN
SELECT ITEM_PRICE INTO PRICE FROM ITEM WHERE ITEM_CODE=item_ID;
IF(PRICE<10) THEN
CON_PRICE:=PRICE;
ELSEIF(PRICE>=10 AND PRICE<=100) THEN
CON_PRICE:=(PRICE*10)*100;
ELSE 
CON_PRICE:=(PRICE*20)*100;
END IF;
END;
/

1 Ответ

0 голосов
/ 10 сентября 2018

У вас есть некоторые проблемы:

  • вам не хватает ключевого слова PROCEDURE
  • ELSEIF должно быть ELSE IF
  • вы пропали без вести и END IF.

Отредактированный код:

CREATE OR REPLACE PROCEDURE consession_calculate(item_ID IN NUMBER, CON_PRICE OUT NUMBER) IS
    PRICE                                   NUMBER;
BEGIN
    SELECT ITEM_PRICE
      INTO PRICE
      FROM ITEM
     WHERE ITEM_CODE = item_ID;

    IF (PRICE < 10)
    THEN
        CON_PRICE    := PRICE;
    ELSE
        IF (    PRICE >= 10
            AND PRICE <= 100)
        THEN
            CON_PRICE    := (PRICE * 10) * 100;
        ELSE
            CON_PRICE    := (PRICE * 20) * 100;
        END IF;
    END IF;
END;
/

Или, согласно тому, что a_horse_with_no_name заметил, что вы можете только добавить PROCEDURE и отредактировать ELSEIF в ELSIF:

CREATE OR REPLACE PROCEDURE consession_calculate(item_ID IN NUMBER, CON_PRICE OUT NUMBER) IS
    PRICE                                   NUMBER;
BEGIN
    SELECT ITEM_PRICE
      INTO PRICE
      FROM ITEM
     WHERE ITEM_CODE = item_ID;

    IF (PRICE < 10)
    THEN
        CON_PRICE    := PRICE;
    ELSIF (    PRICE >= 10
           AND PRICE <= 100)
    THEN
        CON_PRICE    := (PRICE * 10) * 100;
    ELSE
        CON_PRICE    := (PRICE * 20) * 100;
    END IF;
END;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...