Я не уверен в iSeries, но на db2v8.1 сработало следующее:
Учтите, что «ID» - это имя вашего столбца идентификации. Следующий stmt вернет вновь сгенерированный идентификатор (тот же, который вставляется stmt вставки):
SELECT ID FROM FINAL TABLE (
INSERT INTO AwesomeTable (column1, column2, etc.)
VALUES (value1, value2, etc.)
)
Некоторое объяснение, которое я нашел на сайте publib: (я использовал его для справки, чтобы проверить мой запрос выше)
/* The following SELECT statement references an INSERT statement in its
FROM clause. It inserts an employee record from host variables into
table company_b. The current employee ID from the cursor is selected
into the host variable new_id. The keywords FROM FINAL TABLE
determine that the value in new_id is the value of ID after the
INSERT statement is complete.
Note that the ID column in table company_b is generated and without
the SELECT statement an additional query would have to be made in
order to retreive the employee's ID number.
*/
EXEC SQL SELECT ID INTO :new_id
FROM FINAL TABLE(INSERT INTO company_b
VALUES(default, :name, :department, :job, :years, :salary,
:benefits, :id));
Надеюсь, это поможет:)