実際のコードは、こんな感じに、採番した値をダイレクトに変数に代入できるようになった。
なんか、なんの違和感もない直感的なコードになってる気がする。
1 declare 2 num pls_integer; 3 begin 4 num := test_seq.nextval; 5 dbms_output.put_line(num); 6* end; SQL> SQL> / 2 PL/SQL procedure successfully completed.
ちなみに、これがOracle10gまでのコード。
やっぱり、select文って必要ないよな。
1 declare 2 num pls_integer; 3 begin 4 select test_seq.nextval into num from dual; 5 dbms_output.put_line(num); 6* end; SQL> SQL> / 3 PL/SQL procedure successfully completed.
Oracle10gで、11gの新機能を使ってみようとすると当然エラーとなる。
  1  declare
  2    num pls_integer;
  3  begin
  4    num := test_seq.nextval;
  5    dbms_output.put_line(num);
  6* end;
SQL> /
  num := test_seq.nextval;
                  *
ERROR at line 4:
ORA-06550: line 4, column 19:
PLS-00357: Table,View Or Sequence reference 'TEST_SEQ.NEXTVAL' not allowed in
this context
ORA-06550: line 4, column 3:
PL/SQL: Statement ignored
