首页 > 解决方案 > Informix SQL 11.5 — 在 while 循环中访问变量

问题描述

我有一个这样的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循环中访问c1?

标签: stored-procedureswhile-loopinformix

解决方案


您的代码并不完全连贯,这使得难以可靠地帮助您,但这应该接近您的需要:

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;

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

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


推荐阅读