HSQL:如何获取存储过程中UPDATE语句更新的行数

时间:2012-05-02 15:52:23

标签: hsqldb rowcount

我有一个存储过程,它调用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中的等价物。

有任何线索吗?

1 个答案:

答案 0 :(得分:1)

HSQLDB遵循SQL:2008标准。您可以使用GET DIAGNOSTICS语句设置rows_updated变量。还有一个模仿这个陈述的函数。

见这里:

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