AIX | HP-UX | Linux | OS/2 | OS/390 | OS/400 | SCO | SUN | Win NT |
X | X | X | X | X | X | X | X | X |
条件変数の値は、別の変数またはストリングの値に基づいて条件付きで設定されます。 これは 3 進演算とも言います。
条件変数の構文は、次のとおりです。
test ? trueValue : falseValue
ここで、
例 1: 2 つの可能な値とともに定義される条件変数
varA = varB ? "value_1" : "value_2"
varB が存在する場合は varA=value_1 で、 存在しない場合は varA=value_2 です。
例 2: 変数参照とともに定義される条件変数
varname = ? "$(value_1)"
このケースでは、value_1 が NULL の場合は varname は NULL で、 そうでない場合は 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 は HTML 入力変数で、 Web ブラウザーから通常 HTML 形式で渡されます。 変数 where_list は 2 つの条件ステートメントから成る LIST 変数です。 それぞれの条件ステートメントには、Web ブラウザーから受け取った変数が含まれます。
Web ブラウザーが cust_inp と prod_inp の両方の変数に対して、 たとえば IBM と 755C という値を戻した場合、 where_clause は以下のようになります。
WHERE custid = IBM AND product_name LIKE '755C%'
cust_inp または prod_inp の変数のいずれかが NULL であるかあるいは定義されていない場合、 WHERE 文節は NULL 値を省略するように変更されます。 たとえば、prod_inp が NULL の場合の WHERE は以下のようになります。
WHERE custid = IBM
両方の値とも NULL であるかあるいは定義されていない場合、 変数 where_clause は NULL で、$(where_clause) を含む SQL 照会には WHERE 文節は現れません。