3.2 BOOLEANデータ型
PL/SQLのデータ型BOOLEANには、論理値(ブール値のTRUEとFALSE、およびNULL値)が格納されます。NULLは、不明な値を表します。
BOOLEAN変数を宣言するための構文は、次のとおりです。
variable_name BOOLEAN
BOOLEAN変数に代入できる値はBOOLEAN式のみです。詳細は、「ブール式」を参照してください。
SQLにはBOOLEANに相当するデータ型がないため、次の操作は実行できません。
-
データベース表の列に
BOOLEAN値を割り当てる操作 -
データベース表の列の値を選択またはフェッチして
BOOLEAN変数に入れる操作 -
SQLファンクションで
BOOLEAN値を使用する操作(ただし、「例3-3」に示すように、SQL問合せは
BOOLEANパラメータを持つPL/SQLファンクションを起動できます。) -
SQL文(SQL問合せで起動されるPL/SQLファンクションの引数を除く)またはPL/SQL無名ブロックでの
BOOLEAN式の使用ノート:
静的SQL問合せで起動されるPL/SQLファンクションの引数は、
BOOLEANリテラルにできません。これを回避するには、「例3-3」に示すように、リテラルを変数に割り当ててからその変数をファンクションに渡します。
BOOLEAN値は、DBMS_OUTPUT.PUTサブプログラムまたはDBMS_OUTPUT.PUTLINEサブプログラムに渡せません。BOOLEAN値を出力するには、IF文またはCASE文を使用して値を文字値に変換します(これらの文の詳細は、「条件付き選択文」を参照してください)。
例3-2 BOOLEAN値の出力
この例では、プロシージャは、BOOLEANパラメータを受け取り、CASE文を使用して、値がNULLならUnknownを、TRUEならYesを、FALSEならNoを出力します。
関連項目:
例2-34を参照してください。この例では、IF文を使用してprint_booleanプロシージャを作成しています。
PROCEDURE print_boolean (b BOOLEAN)
AS
BEGIN
DBMS_OUTPUT.PUT_LINE (
CASE
WHEN b IS NULL THEN 'Unknown'
WHEN b THEN 'Yes'
WHEN NOT b THEN 'No'
END
);
END;
BEGIN
print_boolean(TRUE);
print_boolean(FALSE);
print_boolean(NULL);
END;
結果:
Yes No Unknown
例3-3 SQL文からのBOOLEANパラメータを持つPL/SQLファンクションの起動
この例では、SQL文により、BOOLEANパラメータを持つPL/SQLファンクションが起動されます。
FUNCTION f (x BOOLEAN, y PLS_INTEGER) RETURN employees.employee_id%TYPE AUTHID CURRENT_USER AS BEGIN IF x THEN RETURN y; ELSE RETURN 2*y; END IF; END; DECLARE name employees.last_name%TYPE; b BOOLEAN := TRUE; BEGIN SELECT last_name INTO name FROM employees WHERE employee_id = f(b, 100); DBMS_OUTPUT.PUT_LINE(name); b := FALSE; SELECT last_name INTO name FROM employees WHERE employee_id = f(b, 100); DBMS_OUTPUT.PUT_LINE(name); END; /
結果:
King Whalen