新建一张表主键id自增,请问下当我插入一条数据时我怎么获取他的自增id的值,(采用jdbc技术 存储过程怎么写)

解决方案 »

  1.   

    你插入的时候ID就应该存在了是不,然后你select下那个ID就好了啊!取一条就好了啊!
      

  2.   

    insert into table_name values (sequence_name.nextval,...);
      

  3.   

    你的意思是返回主键指?jdbc没有怎么弄过,不过用ibatis的特有标签可以实现。
    如:
    <insert id="insertProduct-ORACLE" parameterClass="com.domain.Product">     
        <selectKey resultClass="int" keyProperty="id" type="pre">     
            <![CDATA[SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL]]>     
        </selectKey>     
        <![CDATA[insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values(#id#,#description#)]]>     
    </insert>  
      

  4.   

    你的表中有些啥子栏位啊?
    你写段JDBC代码,通过查询语句去获取新插入的ID啊
    select id from 表 where .....(插入新的值去获取该值对应的ID)
      

  5.   

    jdbc好像有个方法,能够获取到插入操作后产生的指定列的值。即:当你完成插入操作后,会返回你想要的列的值,但好像有个限制条件,就是该列必须是表的主键。
    具体哪个方法忘了。
      

  6.   

    oracle的自增 可以用 sequence 
    sequence.nextval -表示序列的下一个值
    sequence.currval -表示序列的当前值可以这样实现你的需求
    1.  cid = sequence.nextval
    2 insert (id,...) values(cid,...)
      

  7.   

    create table test(
    id number(18,0),
    name varchar2(30));
    create sequence test_seq start with 1 increment by 1 nomaxvalue nocycle;CREATE OR REPLACE PROCEDURE test_op_proc( v_name varchar2, v_sid out number)
    as
    begin
      select test_seq.nextval into v_sid from dual;
      insert into test(id,name) values (v_sid, v_name);
      commit;
    end;
    /set serveroutput on;
    var c_sid number;
    exec test_op_proc('luoyoumoou',:c_sid); 
    print c_sid;
    select * from test;
      

  8.   

    create table test(
    id number(18,0),
    name varchar2(30));
    create sequence test_seq start with 1 increment by 1 nomaxvalue nocycle;CREATE OR REPLACE PROCEDURE test_op_proc( v_name varchar2, v_sid out number)
    as
    begin
      -- select test_seq.nextval into v_sid from dual;    -- Oracle 10g (用这条语句代替下一条语句)
      v_sid := test_seq.nextval;                          -- Oracle 11g (用这条语句代替上一条语句,以提高执行效率!)
      insert into test(id,name) values (v_sid, v_name);
      commit;
    end;
    /set serveroutput on;
    var c_sid number;
    exec test_op_proc('luoyoumoou',:c_sid); 
    print c_sid;
    select * from test;
      

  9.   

    用returning 返回值 --先建立一个序列--returning set serveroutput on 
    declare 
    v_id int;begin
      insert into t1 values(s_id.nextval,'1') returning id into v_id;
      dbms_output.put_line(v_id);end;
      

  10.   

    insert into t1 values(s_id.nextval,'1') returning id into :v_id;
    使用jdbc绑定:v_id即可得到insert的值。