2015-11-13 18 views
0

我正在給我的代碼的一小段代碼,但在嘗試爲存儲的Oracle PL SQL過程創建新訂單時收到下面的錯誤消息。 第83行是代碼中的插入語句,第84行是語句的插入部分。針對新的事務和訂單的PL SQL存儲過程

83/5 PL/SQL:SQL語句忽略
47分之84PL/SQL:ORA-00984:列在這裏

BEGIN 
--Initializing values for variables 
x_rowcount := 0; 
x_stockonhand := 0; 
Totaldue := 0; 

--Total due calculation 
--(price of phone*quantity + shipping cost)*1.06 (assuming 6% sales tax) 
Totaldue := (((i_price * c_p_qty) + i_shipping_cost) * 1.06); 

SAVEPOINT start_transaction; -- mark a savepoint 
--INSERT a new record into order table. 
INSERT INTO orders(o_id,c_id,p_id,s_id,order_date,o_qty,order_total,card_type,cc_number,exp_date,shipping_status) 
VALUES (orders_seq.nextval, c_c_id,c_p_id,s_id,sysdate,c_p_qty,Totaldue,c_card_type,c_cc_number,c_exp_date,'Not shipped yet'); 
+0

認爲您可能必須在插入前先獲得序列。所以也許就像插入前從orders中選擇orders_seq.nextval到myOrdersSeq中一樣; (當然你需要定義myOrdersSeq) –

回答

0

不允許檢查聲明部分。通常,當您在未聲明的變量名稱或變量中輸入拼寫錯誤時,會出現此錯誤。例如:

SQL> create table tmp (id number, str varchar2(100)); 

Table created. 

SQL> declare 
a number; 
begin 
    insert into tmp (id, str) 
    values (a, a1); 
end; 
/ 
    values (a, a1); 
      * 
ERROR at line 5: 
ORA-06550: line 5, column 14: 
PL/SQL: ORA-00984: column not allowed here 
ORA-06550: line 4, column 3: 
PL/SQL: SQL Statement ignored 
0

這個錯誤是因爲一個或多個值在VALUES(...,...)部分是無效的。

我會建議檢查每一個,看看他們是有效的。例如,c_c_id是否在代碼中的其他位置聲明並賦值?如果沒有,這可能是你的問題。每一個都需要聲明並給出一個值,然後才能將其放入INSERT聲明的VALUES(...,...)部分。

INSERT INTO orders(o_id,c_id,p_id,s_id,order_date,o_qty,order_total,card_type,cc_number,exp_date,shipping_status) 
VALUES (orders_seq.nextval, c_c_id,c_p_id,s_id,sysdate,c_p_qty,Totaldue,c_card_type,c_cc_number,c_exp_date,'Not shipped yet');