你首先应该明白存储过程中的参数有三种类型in,out,in out其中out可以向主程序传递参数值你在主程序中想要用什么值,就把什么变量声明为out型,另外,关键字as后面是声明内部变量的!!
      selcet语句要和into连用
例子
CREATE PROCEDURE pBuildExam(p_recid out number)AS
begin
   select Recid.currval into p_recid from kaoshi_master;
   commit;
   exception
     when others then
     rollback;
end;这样p_recid在主程序中就可以用了!!

解决方案 »

  1.   

    在oracle中,你也可以用函数返回.
      

  2.   

    方法很多,你要返回到什麼地方?
    SQL/PLUS下?其他過程或函數中?開發語言(如DELPHI)的界面上顯示?或其他?
      

  3.   

    那怎么调用这个过程呢?你声明了out变量后调用时是不是也要传递参数到存储过程中去啊?
      

  4.   

    做參數設置為OUT型,
    CREATE PROCEDURE pBuildExam(pDlm Varchar2,pDlm Varchar2,p_Sjid number,p_RenID number,p_recid  OUT NUMBER)
    AS
    beginINSERT INTO kaoshi_master(recid,renid,sjid,dlm,xm,kksj) VALUES(recid.nextval,Renid,Sjid,pDlm,pXm,sysdate);
    commit;
    select Recid.currval Recid from kaoshi_master;
    p_recid:=Recid; --要返回的数据,我想将这个参数返回回去。
    exception
       when others then
       rollback;
         
    end;以DELPHI6+ORACLE8I為例子:
    DELPHI6使用BDE連接ORACLE8I:
    SP_TEST:對應存儲過程控件名稱,
    .....
    VAR OUT_VIEW:STRING;
    BEGIN
      .... 
      OUT_VIEW:=SP_TEST.PAPAMBYNAME(p_recid).ASFLOAT;
      ....
    END;
      

  5.   

    可能你是想运行的时候显示这个参数值在赋值完成后,加上一句
    dbms_output.put_line(to_char(p_recid));然后在SQL下执行 set serveroutput onSQL> EXECUTE pBuildExam('参数1','参数2','参数3',数字参数);就会看到SQL有显示结果。或者可以用tst脚本来调试
      

  6.   

    我如何在sql/plus中调用这个过程啊?
      

  7.   

    在sqlplus中 set serveroutput on;
     declare 
      p_recid  NUMBER;
     begin
       pBuildExam('a','b',1,2,p_recid);
     end;这样就可以了
      

  8.   

    晕还是不行啊~!
    call pBuildExam('a','b',1,2,p_recid);
    这句应当怎么写?
    怎么写啊~!
    我在asp中调用。
    sqlstr="call pBuildExam('a','b',1,2,p_recid)
    set rs=conn.execute(sqlstr)
      

  9.   

    CREATE PROCEDURE pBuildExam(pDlm in Varchar2,pDlm in Varchar2,p_Sjid in number,p_RenID in number,p_out out number) --在这里定义返回参数
    AS
    begin
    INSERT INTO kaoshi_master(recid,renid,sjid,dlm,xm,kksj) VALUES(recid.nextval,p_Renid,p_Sjid,pDlm,pXm,sysdate);
    commit;
    select Recid.currval into p_out from kaoshi_master;
    --p_recid:=Recid; --要返回的数据,我想将这个参数返回回去。
    return;
    exception
       when others then
       rollback;
       p_out:=0  ;  --如果出错则返回0     
    end;执行完成了你就可以得到 p_out的值,比如:
    select :p_out from dual;
      

  10.   

    exec pBuildExam('a','b',1,2,p_recid);