本帖最后由 DebugXP 于 2010-12-01 16:02:55 编辑

解决方案 »

  1.   


    create or replace procedure sm_insert(c1 in varchar2,c2 in varchar2,c3 in varchar2,c4 out varchar2)
    is
    c1 varchar2(11);  --逗号改成分号,语句以分号结束
    c2 varchar2(11);
    c3 varchar2(140);
    c4 varchar2(4)  ;    --此参数已经在入参已经定义,但必须需要返回C4
    begin  
     insert into sms(tele,cnt) values(c1,c3);    --values 写错!
     c4:=1;
    end sm_insert ;   --少了分号结束
      

  2.   

    create or replace procedure sm_insert(c1 in varchar2,c2 in varchar2,c3 in varchar2,c4 out varchar2)
    as
    begin
     insert into sms(tele,cnt) values(c1,c3);
    end sm_insert;
      

  3.   

    你要into 的 变量 必须在前面定义 
      

  4.   

    SQL> ed
    已写入 file afiedt.buf  1  create or replace procedure sm_insert
      2  (c1 in varchar2,c2 in varchar2,c3 in varchar2,c4 out varchar2)
    --c1,c2,c3,c4已经在参数里了 不需要在定义
      3  is
      4  begin
      5  insert into sms(tele,cnt) values (c1,c3);
      6  c4:='成功';
      7*  end sm_insert; --这里要分号结束
    SQL> /过程已创建。--调用过程
    SQL> declare
      2  c4 varchar2(10);
      3  begin
      4  sm_insert('a','aa','aaa',c4);
      5  dbms_output.put_line(c4);
      6  end;
      7  /
    成功PL/SQL 过程已成功完成。
      

  5.   


    --不知道你c2,c4干什么,tele,cnt类型是什么
    create or replace procedure 
    sm_insert(c1 sms.tele%type,c2 in varchar2,c3  sms.cnt%type,c4 out varchar2)
    as  ---as or is
    begin  
     insert into sms(tele,cnt) valuse(c1,c3);
    end sm_insert;   --分号
    create or replace procedure sm_insert(c1 sms.tele%type,c2 in varchar2,c3  sms.cnt%type,c4 out varchar2)
    as  
    begin  
     insert into sms(tele,cnt) valuse(c1,c3);
    end sm_insert;