用存储过程,向表中name,sex,phone插入数据,ID为主键,自动增长,现在要在insert之后立刻返回ID,这个存储过程应该怎么写

解决方案 »

  1.   

    创建一个序列sequence
    id用序列来自动增长,最后返回就返回你序列所取的nextval
      

  2.   

    存储过程有返回值,out参数就可以作为返回值啊,只是没理解楼主为什么这么简单的问题要用过程去做?到底需求是什么?
      

  3.   

    这么说吧  我现在在做一个问答系统  用的是SSH框架(领导要我用这个框架做= =没办法,杀鸡用牛刀)
    这个系统的功能是  用户在一个页面提交题目,问题后,后台插入数据库中,并返回一个数字,有一个页面是给用户使用这个数字来查找自己的问题,我这里将主键ID作为这个数字返回给用户但发现在底层DAO中不怎么会写返回ID的方法= = 所以想到了用存储过程,要是有人能教下怎么写这个存储过程最好了
      

  4.   

    SQL> create table t_test_return
      2  (id number(20),
      3   name varchar2(100));
     
    Table created
     
    SQL> 
    SQL> create sequence seq_test_return
      2  minvalue 1
      3  maxvalue 999999999999999999999999999
      4  start with 1
      5  increment by 1;
     
    Sequence created
     
    SQL> 
    SQL> create or replace trigger tri_test_return
      2    before insert on t_test_return
      3    for each row
      4  declare
      5    -- local variables here
      6  begin
      7    select seq_test_return.nextval into :new.id from dual;
      8  end tri_test_return;
      9  /
     
    Trigger created
     
    SQL> insert into t_test_return(name)values('a');
     
    1 row inserted
     
    SQL> select * from t_test_return;
     
                       ID NAME
    --------------------- --------------------------------------------------------------------------------
                        1 a
     
    SQL> 
    SQL> create or replace procedure proc_pass_col_name
      2  
      3  as
      4  v_id number(20);
      5  begin
      6    insert into t_test_return(name)values('b') returning id into v_id;
      7    dbms_output.put_line(v_id);
      8  end;
      9  /
     
    Procedure created
     
    SQL> set serveroutput on
    SQL> exec proc_pass_col_name;
     
    2
     
    PL/SQL procedure successfully completed
     
    SQL> 
      

  5.   

    SQL> select * from t_test_return;
     
                       ID NAME
    --------------------- --------------------------------------------------------------------------------
                        1 a
                        2 b
     
    SQL> 
      

  6.   

    说错了  是能有Hibernate的DAO方法最好= = 不过谢谢minitoy  我试试你的存储过程
      

  7.   

    Hibernate的save对象后直接再次获取对象的ID,应该是可以的