我现有两个表,表1和表2,表1中有一个自增长序列squ_s,它是表1的主键,表2 的一个外键。表1和表2是1对多的关系。
现在有两个jsp页面。页面1是负责表1中数据录入的,页面2是负责录入表2数据的。
成功录入页面1的数据后会自动跳转到页面2录入信息。
现在的问题是:页面1录入完成后,我要记录下这一次录入时的squ_s值,到了页面2录入时插入到表2中。我怎么样获得页面1录入时squ_s(oracle数据库自动增长的。

解决方案 »

  1.   

    进入页面2后可以看看现在当前序列squ_s的值:
    SELECT sq.currval FROM dual;
      

  2.   


    谢谢你的回复。这方法我试过,不过用currval的时候总是出现“该序列不在当前的会话中“的错误!!
      

  3.   

    要先提取sq.nextval才会有currval
      

  4.   


    scott@YPCOST> create sequence testseq start with 1 increment by 1;序列已创建。scott@YPCOST> select testseq.currval from dual;
    select testseq.currval from dual
           *
    第 1 行出现错误:
    ORA-08002: 序列 TESTSEQ.CURRVAL 尚未在此会话中定义
    scott@YPCOST> select testseq.nextval from dual;   NEXTVAL
    ----------
             1scott@YPCOST> select testseq.currval from dual;   CURRVAL
    ----------
             1
      

  5.   

    序列创建成功之后,要先执行一次nextval后,以后才能执行currval
      

  6.   

    你那个应该没问题啊,因为你页面1录入完成后就执行了一次nextval,然后跳转到页面2去查询序列currval,应该不会报错的啊
      

  7.   

    我在网上查的,好像是说如果close.connection的话,oracle数据库就算一个会话结束。你知道这是怎么回事不?
      

  8.   

    各位高手,我现在是要把那个序列值调到jsp页面上去,不是在sqlplus里操作。谢谢!!
      

  9.   

    close.connection
    连接断了 那会话肯定结束了咯我那是跟你演示 要先有nextval才会有currval
      

  10.   

    能写一段jsp代码,让currval值赋给一个变量??
      

  11.   

    我记得好像在c#里这样的需求是 通过页面调用 
    或者是application来完成的
      

  12.   

    C#号的也行,你写出来。我知道在sqlplus里用select可以把一个值赋值给一个变量,但是我不知道怎么把那个变量调用到页面里面去?比如说:oracle为 select expr  into variable  from table where .... 页面里面怎么取得variable的值我就不知道了???
      

  13.   

    select seq.curvalue,seq.nextvalue from dual 这样可以取到序列的当前值,但是同时会改变序列的next值,不知道有没有影响