DECLARE
v_orderid carddetail.orderid%type;
v_orderdate carddetail.orderdate%type;
v_endno carddetail.endno%type;
v_startno carddetail.startno%type;
v_amount carddetail.amount%type;
m NUMBER;
n NUMBER;
CURSOR c1 IS select  orderid,orderdate,startno,endno,amount from carddetail b where b.orderid in 
(select  a.orderid from cardorder a where a.orderdate between '20110101' and '20110831' and 
(a.guestname like '%个人%' or a.guestname like '%自用%' or a.guestname like '%白俊峰%' )) and rownum <3 order by orderid ;
BEGIN
  OPEN c1;
    LOOP
      FETCH c1 INTO v_orderid, v_orderdate,v_endno,v_startno,v_amount;
      EXIT WHEN c1%NOTFOUND;
      select sum(substr(v_endno, 16, 3) - substr(v_startno, 16, 3) + 1) into m from dual;
      select m*v_amount into n from dual;
      dbms_output.put_line('orderid is :' || v_orderid ||chr(32) ||chr(32)||'发卡量:' || m || chr(32) ||chr(32)||'发卡额:' ||n);
-----我想把当前获取的m值,n值当成变量插入到下面的表中,可是最后提示错误,请问如何可以正确插入??? select seq_temp_id.Nextval,v_orderid,v_orderdate,v_endno,v_startno,v_amount,m,n   into temp_pan from carddetail;
      dbms_output.put_line('');
    END LOOP;
  CLOSE c1;
END;
/ERROR at line 21:
ORA-06550: line 21, column 88:
PLS-00403: expression 'TEMP_PAN' cannot be used as an INTO-target of a SELECT/FETCH statement

解决方案 »

  1.   

    对了! 当我 注释 seq_temp_id.Nextval,v_orderid,v_orderdate,v_endno,v_startno,v_amount,m,n into temp_pan from carddetail; 后, 语句运行正常
      

  2.   

    temp_pan 你这个是表吗?
    如果是表insert into temp_pan
    select seq_temp_id.Nextval,v_orderid,v_orderdate,v_endno,v_startno,v_amount,m,n into temp_pan from dual;
      

  3.   

    是这个表! 但是把您的语句复制到我的sql中,执行后报如下错误!ERROR at line 21:
    ORA-06550: line 21, column 102:
    PL/SQL: ORA-01744: inappropriate INTO
    ORA-06550: line 21, column 1:
    PL/SQL: SQL Statement ignored
      

  4.   

    ...insert into temp_pan
    select seq_temp_id.Nextval,v_orderid,v_orderdate,v_endno,v_startno,v_amount,m,n into temp_pan from dual;select 的 into temp_pan 删掉