执行Oracle INSERT时遇ORA-00984错误,求排查解决
ORA-00984错误原因及修正
你的判断有误,错误根源不是数据类型不匹配,而是变量名拼写错误:
- 函数参数定义的是
customer_id,但INSERT语句的VALUES子句里误用了未定义的cust_id,Oracle将这个不存在的变量识别为列名,因此抛出"column not allowed here"错误。
修正后的函数代码:
FUNCTION insert_in_sales( sale_id NUMBER, prod_id NUMBER, customer_id NUMBER, quantity NUMBER, sale_date DATE ) RETURN VARCHAR2 IS BEGIN INSERT INTO sales(SaleID, ProductID, CustomerID, Quantity, SaleDate) VALUES(sale_id, prod_id, customer_id, quantity, sale_date); -- 将cust_id修正为customer_id COMMIT; RETURN 'New sales record added successfully'; EXCEPTION WHEN OTHERS THEN ROLLBACK; RETURN 'An error occurred ' || SQLERRM; END insert_in_sales;
内容的提问来源于stack exchange,提问作者Ayush Singh
相关产品推荐
相关产品推荐

