WHILE DO
END WHILE
::= IS [NOT] NULL
::= < | > | = | <= | >= | !=
::= |
::= [{operator}…]
::= | |
::= +|-|/|*
定义求值为真或假的布尔表达式。
::= !! SQLScript procedural statements 只要循环开头 true,WHILE 循环就会执行循环主体中的
谓词 x [NOT] BETWEEN lower AND upper 也可以在 NOT ] ( x >= lower AND x <= upper) 相同。有关详细信息,请参阅示例 3。
示例 1
使用 WHILE 可使用嵌套循环增加 :v_index1 和 :v_index2 变量。
CREATE PROCEDURE procWHILE (OUT V_INDEX2 INTEGER) LANGUAGE SQLSCRIPT
READS SQL DATA
AS
BEGIN
DECLARE v_index1 INT = 0;
WHILE :v_index1 < 5 DO
v_index2 = 0;
WHILE :v_index2 < 5 DO
v_index2 = :v_index2 + 1;
END WHILE;
v_index1 = :v_index1 + 1;
END WHILE;
END;
示例 2
您还可以将标量 UDF 用于 while 条件,如下所示。
CREATE PROCEDURE proc (in input1 INTEGER, out output1 TYPE1)
AS
BEGIN
DECLARE i INTEGER DEFAULT :input1;
DECLARE cnt INTEGER DEFAULT 0;
WHILE SUDF(:i) > 0 DO
cnt = :cnt + 1;
i = :i - 1;
END WHILE;
output1 = SELECT value FROM T1 where id = :cnt ;
END;
示例 3
CREATE FUNCTION between_03(x INT)
RETURNS result NVARCHAR(1) AS
BEGIN
DECLARE idx INT = :x;
result = 'O';
WHILE :idx BETWEEN 5 AND 15 DO
idx = :idx + 1;
result = 'X';
END WHILE;
END;
注意不会执行特定检查以避免无限循环。