stored-procedures - 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?
解决方案
您的代码并不完全连贯,这使得难以可靠地帮助您,但这应该接近您的需要:
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 语句后缺少分号的权利。
推荐阅读
- javascript - 如何重新为多个图像创建模态?
- angular - Angular页面,XPath找不到文本
- kubernetes - 使用 RBAC 为上游和下游配置 Istio 入口网关
- html - 如何更改活动导航链接的背景颜色?
- c++ - 模棱两可的重载运算符 C++20
- java - XSSFWorkbook.getSheet() 返回 null
- javascript - 如何使用反应和打字稿根据表单字段的值将反应状态设置为一些初始状态?
- r - 查找两组分类数据之间的相关性
- delphi - 给不同的类添加一些常用的方法
- tensorflow - 将 feed_dict 与 Tensorflow Estimator API 一起使用,“您必须使用 dtype float 和 shape [?,784] 为占位符张量‘Placeholder’提供一个值”