1

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

有什么线索吗?

4

1 回答 1

1

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

看这里:

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

于 2012-05-02T19:00:22.210 回答