我收到此错误,这似乎与列拼写有关。但是我百分之九十九确定我的拼写正确无误,但是我看不到任何原因会出错。
来源:
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) );
在此先感谢您的帮助。
将更新更改为:
UPDATE products SET qoh = v_new_qoh WHERE id = :new.product_id;
即v_new_qoh前面没有冒号。
行号(12)表示PL / SQL块的行号。该代码块以单词DECLARE开头,因此第12行以以下代码开头:
SET qoh = :v_new_qoh