我收到此错误,这似乎是列拼写问题。然而,我 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)
);
在此先感谢您的帮助。
将更新更改为:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)