1

我有一个可以设置属性的表,但它应该在一定时间后过期。如果我运行这样的查询,它会按预期工作:

update MY_TABLE
set PROP = :value, PROP_TIMEOUT = dateadd (7 day to CURRENT_TIMESTAMP)
where ID = :id

但是,如果我尝试将计算出的超时作为同一查询的一部分进行检索,它会返回一个空结果集,并且表中不会更新任何记录:

update MY_TABLE
set PROP = :value, PROP_TIMEOUT = dateadd (7 day to CURRENT_TIMESTAMP)
where ID = :id
returning PROP_TIMEOUT

这是 Firebird 中的错误,还是我做错了什么?使用 FBEMBED 2.5.1 版。

4

1 回答 1

2

当您使用 RETURNING [fields] 时,您需要指定 INTO [variables]。INTO 仅在 PSQL 中可用

例子:

:
update MY_TABLE
set PROP = :value, PROP_TIMEOUT = dateadd (7 day to CURRENT_TIMESTAMP)
where ID = :id
returning PROP_TIMEOUT
into :ret_prop_timeout; -- variable needs to be declared
:
suspend; -- to return a output row
于 2012-11-22T05:15:43.527 回答