AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | PTX | SUN | Win NT |
X | X | X | X | X | X | X | X | X |
條件式變數是根據另一個變數或字串的值所設定。它又稱為 ternary 作業。
條件式設定變數的語法為:
condVar = testVar ? trueValue : falseValue
其中:
範例 1:用兩個可能的值所定義的條件式變數
varA = varB ? "value_1" : "value_2"
varB 為測試。所以,varA 被指定為 "value_1" 或 "value_2" 的其中一個,其根據 varB 是否存在且不包含 NULL 值而定。
範例 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 子句。