gpt4 book ai didi

firebird - 暂停如何在 Firebird 中工作?

转载 作者:行者123 更新时间:2023-12-04 11:22:18 26 4
gpt4 key购买 nike

我有一个表 t,其中一列是 int 类型,有几行。
我想循环它。当然,我可以为此编写一个选择查询。不过我是学程序的,写了个程序,

set term ^;
create procedure qt returns(a int) as
begin
for select i from t into :a do
suspend;
end^
set term ;^

但是当我调用这个程序时,我只得到一行,
execute procedure qt;

我懂了,
           A 
============
1

我想我不明白 suspend .

最佳答案

带有 SUSPEND 的存储过程其中有所谓的可选程序。您可以使用 SELECT 执行它们:

SELECT * FROM qt
或者
SELECT * FROM qt()
EXECUTE PROCEDURE 语句仅用于产生单行结果的过程。如果您将它用于可选择的存储过程,那么它只会产生一行(并在遇到 SUSPEND 时退出)。
回应您对有关此记录的内容的询问:
  • 第 177 页的 Interbase 6.0 语言引用说:

    SUSPEND should not be used in an executable procedure.


  • 在第 178 页上,它显示了 SUSPEND 的行为表。 , EXITEND在可选择和可执行的程序中(稍微修改以适应):

  • Procedure type SUSPEND                EXIT                END
    Selectable • Suspends execution Jumps to final END • Returns control
    of procedure until to application
    next FETCH is issued • Sets SQLCODE to 100
    • Returns output (end of record stream)
    values

    Executable • Jumps to final END Jumps to final END • Returns values
    • Not recommended • Returns control
    to application
  • 对于可以生成多行的存储过程(如第 178 页所示),第 179 页描述了使用 SELECT 执行时的行为差异。并使用 EXECUTE PROCEDURE 执行.
  • 关于firebird - 暂停如何在 Firebird 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33119002/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com