在条件中使用 NULL 和 SELECT

如果声明了一个用 nullselect 命名的变量,则将它包含在使用关键字 IN 的条件中,就会产生多义性。下面的例子给出了产生问题的三种条件:在 IF 语句中,在 SELECT 语句的 WHERE 子句中,以及在 WHILE 条件中:
CREATE PROCEDURE problem()
        . . .
        DEFINE x,y,select, null, INT;
        DEFINE pfname CHAR[15];
        LET x = 3; LET select = 300;
        LET null = 1;
        IF x IN (select, 10, 12) THEN LET y = 1; -- problem if
        
        IF x IN (1, 2, 4) THEN
        SELECT customer_num, fname INTO y, pfname FROM customer
        WHERE customer IN (select , 301 , 302, 303); -- problem in
        
        WHILE x IN (null, 2)     -- problem while
        . . .
        END WHILE;
如果可以确保不是列表中的第一个元素,就可以在 IN 列表中使用变量 select。下面例子中的变通方法改正了前面例子中的 IF 语句:
IF x IN (10, select, 12) THEN LET y = 1; -- problem if

对于把 null 用作变量名并试图把该变量用在 IN 条件的情况,没有可用的变通方法。