<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="topic_template.xsl"?>
<topic>
<category>Statement</category>
<classification>SQL-DDL</classification>
<ref_entry>GEN_ID()</ref_entry>
<creator date="2004/05/09 00:00:00">T.Hayashi</creator>
<modified />
<definition>ジェネレータから値を取り出します。</definition>
<structure>
  <sql>
   <syn>GEN_ID(<var>generator_name</var>, <var>num_increment</var>)</syn>
  </sql>
</structure>
<arguments>
  <argument>
  <name><var>generator_name</var></name>
  <description>ジェネレータ名には、既に作成されているジェネレータ名を指定します。</description>
  </argument>
  <argument>
  <name><var>num_increment</var></name>
  <description>増分値には、-(2^63) ～ 2^63 - 1 を指定することが出来ます。0を指定すると同じ値を取り出し続けることが出来ます。</description>
  </argument>
</arguments>
<description>
ジェネレータから値を取り出すために使用します。
</description>
<examples>
 <example>
  <description>ジェネレータから値を一つ取り出す。</description>
  <samplecode>SELECT GEN_ID(GEN_hogehoge, 1) FROM RDB$DATABASE;</samplecode>
 </example>
 <example>
  <description>ストアドでジェネレータを取得する。</description>
  <samplecode>
  SET TERM !! ;
  CREATE PROCEDURE SP_GEN_hogehoge
  RETURNS (int_hogehoge INTEGER)
  AS
  BEGIN
    int_hogehoge = GEN_ID(GEN_hogehoge);
  END;
  SET TERM ; !!
  </samplecode>
  </example>
  <example>
  <description>ジェネレータをトリガと組み合わせてオートナンバ型を実現するためには、以下のようにします。</description>
  <samplecode>
  SET TERM !! ;
  CREATE TRIGGER TRG_SET_hogehoge_ID FOR T_hogehoge
    BEFORE INSERT POSITION 0 AS
    BEGIN
      NEW.hogehoge_ID = GEN_ID(GEN_hogehoge_ID, 1);
    END!!
  SET TERM ; !!
  </samplecode>
  </example>
</examples>
<see_also>
  <keyword name="sql_create_generator">CREATE GENERATOR</keyword>
  <keyword name="sql_drop_generator">DROP GENERATOR</keyword>
  <keyword name="sql_set_generator">SET GENERATOR</keyword>
</see_also>
</topic>
