| AIX | HP-UX | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
| X | X | X | X | X | X | X | X |
條件式變數的值,是根據另一變數或字串的值,做條件式設定。 它又稱為 ternary 作業。
條件式變數的語法為:
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)
%}
條件式和 LIST 變數一起使用時,其效果最佳。 這個範例將告訴您,如何在 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%'
如果 cust_inp 或 prod_inp 其中一個變數為空值,或者沒有定義, 則 WHERE 子句會變成省略這個空值。 例如:如果prod_inp為空值,則 WHERE 子句將如下所示:
WHERE custid = IBM
如果兩者皆為空值或都沒有定義,則 where_clause 變數為空值, 且含有 $(where_clause) 的 SQL 查詢中,也不會出現任何 WHERE 子句。