declare
 v_temp number(10);
begin
  v_temp:=s_test.nextval;--s_test是一个序列
end;这样不能获取s_test序列的值,
是不是一定要用select s_test.nextval into v_temp from dual这种方式啊?

解决方案 »

  1.   

    declare
     v_temp number(10);
    begin
      select s_test.nextval into v_temp from dual;
      dbms_output.put_line('v_temp='||v_temp); 
    end;
      

  2.   

    -- Oracle 11g这样是可以的:
    declare
     v_temp number(10);
    begin
      v_temp:=s_test.nextval;--s_test是一个序列
    end;
    /-- Oracle 10g及之前的版本,只能这样:
    declare
     v_temp number(10);
    begin
      select s_test.nextval into v_temp from dual; --s_test是一个序列
    end;
    /
      

  3.   

    --   Oracle   11g这样是可以的:
    declare
      v_temp   number(10);
    begin
        v_temp:=s_test.nextval;--s_test是一个序列
    end;
    /--   Oracle   10g及之前的版本,只能这样:
    declare
      v_temp   number(10);
    begin
        select   s_test.nextval   into   v_temp   from   dual;   --s_test是一个序列
    end;
    /
      

  4.   

    好的,谢谢啊!!怪不得我在有的oracle上可以运行,回到测试环境的9i就不可以呢!