Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 用于新事务和订单的PL SQL存储过程_Oracle_Variables_Plsql_Insert - Fatal编程技术网

Oracle 用于新事务和订单的PL SQL存储过程

Oracle 用于新事务和订单的PL SQL存储过程,oracle,variables,plsql,insert,Oracle,Variables,Plsql,Insert,我给出了一小段代码,但在尝试为存储的Oracle pl sql过程创建新订单时,收到了以下错误。 第83行是代码中的insert语句,第84行是语句的insert部分 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,sysd

我给出了一小段代码,但在尝试为存储的Oracle pl sql过程创建新订单时,收到了以下错误。 第83行是代码中的insert语句,第84行是语句的insert部分

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');
83/5 PL/SQL:SQL语句被忽略
84/47 PL/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'); 

检查您的申报部分。通常,在输入变量名或未声明变量时会出现此错误。例如:

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

错误是因为
值(…,…)
部分中的一个或多个值无效

我建议检查每一个,看看它们是否有效。例如,
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');

我想你可能必须在插入之前先获得序列。因此,在将select orders_seq.nextval从dual插入myOrdersSeq之前,可能会出现类似的情况;(当然,您需要定义myOrderSeq)