HSQL: как получить количество строк, обновленных оператором UPDATE в хранимой процедуре

У меня есть хранимая процедура, которая вызывает оператор UPDATE (или INSERT, или DELETE), и я хотел бы сохранить количество строк, обновленных этим оператором, в переменной локали.

Это не работает, потому что INSERT - это инструкция и не может быть оценена как выражение:

CREATE PROCEDURE f()
MODIFIES SQL DATA
BEGIN ATOMIC
  DECLARE rows_updated INT;
  SET rows_updated = (INSERT INTO my_table VALUES(1,2));
  ...
END;

Другие механизмы SQL, похоже, имеют «метапеременную» под названием «@@ rowcount» для получения количества строк, обновленных последним оператором UPDATE / INSERT / DELETE транзакции. Я не нашел аналога в HSQL.

Есть подсказка?


person user1370443    schedule 02.05.2012    source источник


Ответы (1)


HSQLDB следует стандарту SQL: 2008. Вы можете установить переменную rows_updated с помощью оператора GET DIAGNOSTICS. Также есть функция, которая имитирует это утверждение.

Посмотреть здесь:

http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#dac_diagnostics_state

person fredt    schedule 02.05.2012