我有一个表 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
时退出)。回应您对有关此记录的内容的询问:
SUSPEND
、 EXIT
和 END
在可选和可执行程序中的行为表(稍微修改以适应): 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
SELECT
执行和使用 EXECUTE PROCEDURE
执行时的行为差异。