Informix SQL 11.5 — 在 while 循环中访问变量

Informix SQL 11.5 — access to variable in while loop

我有这样一个 while 循环:

CREATE PROCEDURE  PROCEDURE1()

  WHILE EXISTS (SELECT c1 FROM table1)
   --how can to  get c1?
  END WHILE;

END PROCEDURE;

很遗憾,此解决方案无效:

  CREATE PROCEDURE  PROCEDURE1()
   Define c1 type1;
   Let c1 = value1;
   WHILE EXISTS (SELECT c1 FROM table1)
   --c1 is not updated after select
    END WHILE;

如何在 while 循环中访问 c​​1?

您的代码不完全连贯,因此很难可靠地帮助您,但这应该接近您的需要:

CREATE PROCEDURE procedure1()

    DEFINE r1 TYPE1;      -- Pick your type here
    FOREACH SELECT c1 INTO r1 FROM Table1
        -- r1 contains the value from the column c1 in the current row
        -- in the table; use it
    END FOREACH

END PROCEDURE;

虽然您可以将名称 r1 替换为 c1,但这可能会造成混淆。 您可以调整 SELECT 语句以满足您的需要,添加 DISTINCT 或将值传递到过程中并对其进行过滤等。如果没有匹配的行(那么您要查找的内容不存在) ,循环体将不会被执行。

我保留在 SELECT 语句后缺少分号的权利。