create or replace procedure   operateexuserdataandflowinfo
    as
   phoneno varchar(13),
   entertime varchar(20),
   salepersonno varchar(30),
   countyid int,
   flowused int,
   dday varchar
  begin declare userid number;
  begin insert into exuserdata(phoneno,entertime,salepersonno,countyid) 
  values(?,to_date(?,'YYYY-MM-DD HH24:MI:SS'),?,?) 
  returning pid into userid; 
  insert into flowinfo(userid,flowused,day) 
  values(userid,?,to_date(?,'YYYY-MM-DD HH24:MI:SS')); 
  end;
  end;这是我写的存储过程,要完成的sql语句功能为declare userid number; begin insert into exuserdata(phoneno,entertime,salepersonno,countyid) values(?,to_date(?,'YYYY-MM-DD HH24:MI:SS'),?,?) returning pid into userid; insert into flowinfo(userid,flowused,day) values(userid,?,to_date(?,'YYYY-MM-DD HH24:MI:SS')); end;
请问哪里有错啊。

解决方案 »

  1.   

    首先楼主你应当注意合适的缩进以及适当的注释,这样子的写法估计会被你项目经理骂的狗血喷头,换成谁维护你的代码都会觉着比较郁闷。
    CREATE OR REPLACE PROCEDURE XXXX
    AS
    BEGIN
        NULL;
    EXCEPTION
        WHEN OTHERS THEN
            XXXX;
    END XXXX;
    其次,我没有看明白你的PL/SQL是干什么的,呵呵。可能是我知识面狭窄把,‘?’到底起什么作用呢?
      

  2.   

    拿本plsql的书看看语法,就知道哪里错了
      

  3.   

    你写的如果是Oracle,语法完全就不对,
    create or replace procedure operateexuserdataandflowinfo
    --输入(in)输出(out)参数 
      (phoneno IN varchar,
      entertime IN varchar,
      salepersonno IN varchar,
      countyid IN int,
      flowused IN int,
      dday IN varchar)
      begin    
      insert into exuserdata(phoneno,entertime,salepersonno,countyid)  
      values(?,to_date(?,'YYYY-MM-DD HH24:MI:SS'),?,?) ; 
        
      insert into flowinfo(userid,flowused,day)  
      values(userid,?,to_date(?,'YYYY-MM-DD HH24:MI:SS'));  
      end;