AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X | X | X | X | X | X |
条件变量的值是根据另一个变量或字符串的值来有条件地设置的。这也称为三元操作。
条件变量的语法是:
test ? trueValue : falseValue
其中:
例 1:用两个可能的值定义的条件变量
varA = varB ? "value_1" : "value_2"
如果 varB 存在,varA=value_1,否则 varA=value_2 。
例 2:用一个变量引用定义的条件变量
varname = ? "$(value_1)"
在此情况下,如果 value_1 为空,则 varname 为空,否则 varname 设置成 value_1 。
例 3:使用一个 LIST 语句和 WHERE 子句的条件变量
%DEFINE{ %list " AND " where_list where_list = ? "custid = $(cust_inp)" where_list = ? "product_name LIKE '$(prod_inp)%'" where_clause = ? "WHERE $(where_list)" %} %FUNCTION(DTW_SQL) mySelect() { SELECT * FROM prodtable $(where_clause) %}
条件变量和列表变量一起使用时最有效。 上面的例子显示了如何在 DEFINE 块中建立一个 WHERE 子句。 变量 cust_inp 和 prod_inp 都是从 Web 浏览器(通常是 HTML 表)传递过来的 HTML 输入变量。变量 where_list 是一个 LIST 变量,由两个条件语句组成,每个语句包 含一个来自 Web 浏览器的变量。
如果 Web 浏览器对变量 cust_inp 和 prod_inp 同时返回值,例如 IBM 和 755C,则 where_clause 是:
WHERE custid = IBM AND product_name LIKE '755C%'
如果变量 ccust_inp 或 cprod_inp 中有一个为空或未定义,则更改 WHERE 语 句,省略其中的空值。 例如,如果 prod_inp 为空,则 WHERE 子句是:
WHERE custid = IBM
如果两个值都为空或未定义,则变量 cwhere_clause 为空,并且包含有 $(where_clause) 的 SQL 查询中没有 WHERE 子句。