如何在 Firebird 中使用 For 循环?

Posted

技术标签:

【中文标题】如何在 Firebird 中使用 For 循环?【英文标题】:How do I use the For loop in Firebird? 【发布时间】:2011-08-18 12:14:50 【问题描述】:

有人可以向我解释一下 Firebird 中 For 循环的语法吗?

这是我目前的代码:

As 
Declare variable Var1 integer;
begin
Insert into table1 
-- Select query to insert some enteries in table 1 - Done successfully.
FOR SELECT table1.Column1 from table1 into :Var1 
Do
Begin 
Update tableabc.column1 = (select tablexyz. column1 from tablexyz where tablexyz.ID = :Var1) where tableabc.ID = :Var1 
End

更新:感谢您试一试,但我没有看到我编写的查询与答案中包含的查询之间有任何重大区别。虽然上面的查询在我结束时运行成功,但是当我看到表中的数据时没有更新。

实际上我犯了一个 v.dumb 错误,我正在执行更改存储过程查询 - 它运行成功,我假设这会进行必要的更改。后来我执行了存储过程,它工作得很好。感谢大家抽出时间:) ..

【问题讨论】:

【参考方案1】: Firebird 中的

For 运算符与 Pascal 中的 For 不同,它递增循环变量并执行代码块,直到满足结束值。 p>

在 Firebird 中,For 运算符获取一组记录(执行查询的结果)并循环遍历它们。对于每条记录,都会执行一段代码。可以选择将记录中某些字段的值放入 INTO 部分中列出的局部变量中。这些变量的值可以在代码块中使用。

在您的示例中是一个查询:

SELECT table1.Column1 from table1 into :Var1

将被执行并且对于结果集中的每条记录都将被执行操作符:

Update tableabc.column1 = 
  (select tablexyz. column1 from tablexyz where tablexyz.ID = :Var1) 
where tableabc.ID = :Var1

对于它的变量 :Var 将包含当前记录的 table1.Column1 的值。

【讨论】:

感谢您的精彩解释。【参考方案2】:
create procedure TEST
as
declare variable TMP integer;
begin
  for select one_f from one into :tmp
  do
  begin
      insert into two (two_f) values (:tmp); 
  end
  suspend;
end

对于表“one”中的每一行,执行运算符插入。 Tmp 包含表“one”中当前行的值。

附:对不起我的英语

【讨论】:

以上是关于如何在 Firebird 中使用 For 循环?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 html 标记(如段落)中使用 if 语句显示 for 循环的结果

Firebird hash join

Python:如何使用 for 循环合并两个列表,如 zip

如何仅使用for循环在matlab中裁剪图像? [复制]

如何用 C# 中的函数语句替换 for 循环?

firebird数据库的问题么? FlameRobin 如何使用?