Oracle SQL PLS-00049: плохая переменная bind

Я получаю эту ошибку, которая, кажется, связана с орфографией столбцов. Тем не менее, я на 99 процентов уверен, что все написано правильно, но я не вижу причин, чтобы получить ошибку, которую я делаю....

Вот исходник:

CREATE OR REPLACE TRIGGER update_qoh_trigger
    AFTER INSERT ON sales
    FOR EACH ROW
DECLARE
    v_qoh products.qoh%TYPE;
    v_new_qoh products.qoh%TYPE;
BEGIN
    SELECT qoh INTO v_qoh
    FROM products
    WHERE id = :new.product_id;

    v_new_qoh := v_qoh - new.quantity; // ERROR HERE

    UPDATE products
    SET qoh = :v_new_qoh
    WHERE id = :new.product_id;
END;
/
sho err

И это дает:

12/12 PLS-00049: bad bind variable 'V_NEW_QOH' 

Я пытался заменить 12-ю строку на следующие комбинации:

  • v_new_qoh := :v_qoh - :new.quantity;
  • :v_new_qoh := :v_qoh - :new. quantity;
  • :v_new_qoh = :v_qoh - :new.quantity;
  • :v_new_qoh := v_qoh - :new.quantity;
  • :v_new_qoh := :v_qoh - new.quantity;
  • v_new_qoh := v_qoh - :new.quantity;

Но это все равно дает мне ошибку.

Таблица продуктов выглядит так:

CREATE TABLE products (
    id NUMBER,
    name VARCHAR2,
    price NUMBER,
    qoh NUMBER(2)
);

CREATE TABLE sales (
    id NUMBER(10) AUTO_INCREMENT,
    customer_id NUBMER(3),
    product_id NUMBER(3),
    quantity NUMBER(2),
    price NUMBER(5,2),
    sale_date DATE,
    despatch_id NUMBER(10)
);

Заранее спасибо за помощь.

15
задан Brad Koch 29 March 2018 в 03:12
поделиться