Oracle SQL无效标识符
我检查了一些SQL无效标识符解决方案,但没有一个能帮助我解决问题Oracle SQL无效标识符,oracle,stored-procedures,Oracle,Stored Procedures,我检查了一些SQL无效标识符解决方案,但没有一个能帮助我解决问题 CREATE OR REPLACE PROCEDURE add_order( p_cust_id cust_order.cust_id%TYPE, p_order_id cust_order.order_id%TYPE, p_order_date cust_order.order_date%TYPE, p_sales_made_by cust_order.sales_made_by%TY
CREATE OR REPLACE PROCEDURE add_order(
p_cust_id cust_order.cust_id%TYPE,
p_order_id cust_order.order_id%TYPE,
p_order_date cust_order.order_date%TYPE,
p_sales_made_by cust_order.sales_made_by%TYPE,
p_qty cust_order.qty%TYPE,
p_product_id cust_order.product_id%TYPE,
p_cust_charged cust_order.cust_charged%TYPE,
p_company_price cust_order.company_price%TYPE,
p_shipper_id cust_order.shipper_id%TYPE)
IS
BEGIN
IF p_shipper_id = 'FEDEX' OR p_shipper_id = 'USPS' OR p_shipper_id = 'CUST' THEN
INSERT INTO productss (cust_id, order_id, order_date, sales_made_by, qty,
product_id, cust_charged, company_price, shipper_id)
VALUES (p_cust_id, p_order_id, p_order_date, p_sales_made_by, p_qty,
p_product_id, p_cust_charged, p_company_price, p_shipper_id);
ELSE
dbms_output.PUT_LINE('This shipper IS NOT allowed');
END IF;
END add_order;
/
错误是:
17/1 PL/SQL: SQL Statement ignored
17/116 PL/SQL: ORA-00904: "SHIPPER_ID": invalid identifier
这是表格:
CREATE TABLE CUST_ORDER
(
CUST_ID NUMBER(15),
ORDER_ID NUMBER(20),
ORDER_DATE DATE,
SALES_MADE_BY VARCHAR(40),
QTY NUMBER,
PRODUCT_ID NUMBER,
CUST_CHARGED NUMBER,
COMPANY_PRICE NUMBER,
SHIPPER_ID NUMBER,
PRIMARY KEY (ORDER_ID),
FOREIGN KEY (CUST_ID) REFERENCES CUST_INFO(CUST_ID),
FOREIGN KEY (PRODUCT_ID) REFERENCES PRODUCTS(PRODUCT_ID)
FOREIGN KEY (SHIPPER_ID) REFERENCES SHIPPING(SHIPPER_ID)
);
我想这是一个明显的错误,但我工作太多了。产品表名称中有一个额外的“S”:
INSERT INTO PRODUCTSS
^
正如@Alex Poole所指出的,考虑到进程的命名,您似乎插入到了错误的表中。插入语句中的Products是什么?你指的是产品吗?为什么你要插入一个产品表,不管它的拼写如何;鉴于您是如何定义参数的,您不应该将其插入客户订单吗?