【发布时间】:2017-08-23 07:59:19
【问题描述】:
我想知道是否以及如何循环遍历 delete 语句的结果。
delete 语句能够返回已删除记录的值:
Firebird 2.5 Language Reference
DELETE FROM {target} [[AS] alias] [WHERE {search-conditions | CURRENT OF cursorname}] [PLAN plan_items] [ORDER BY sort_items] [ROWS <m> [TO <n>]] [RETURNING <returning_list> [INTO <variables>]] <m>, <n> ::= Any expression evaluating to an integer. <returning_list> ::= ret_value [, ret_value ...] <variables> ::= :varname [, :varname ...]
但是使用returning 语法,带有多个结果记录的delete 给了我:
单例选择中的多行。
这样的块语句
EXECUTE BLOCK
RETURNS (
ADSREF TYPE OF DMN_REFID)
AS
begin
for
delete from m_s_ad_memo
returning ADSREF into :adsref
do
suspend;
end
返回以下错误信息:
令牌无效。
动态 SQL 错误。
SQL 错误代码 = -104。
令牌未知 - 第 7 行,第 5 列。
删除。
那么,这可能吗?
它可以与周围的for select ... do-loop 和光标一起使用吗?
这种方法会是什么样子?
我还没有使用过游标。
【问题讨论】:
-
两个指向“使用游标”示例的链接位于stackoverflow.com/a/45373980/976391 - 但是游标在 FB3 中可能非常慢,他们仍然在 3.01、3.02、...中发现性能错误。
标签: sql firebird sql-delete firebird2.5