文字列の配列があります。特定の文字列が配列に存在するかどうかを確認したいと思います。
DECLARE
TYPE v_array IS TABLE OF VARCHAR2(200);
ais_array v_array;
BEGIN
ais_array := ('Lb1','Lb2','Lb3','Lb613');
IF 'Lb1' IN ais_array THEN
dbms_output.put_line('found');
END IF;
END;
IN
演算子が機能していません。型に対してselect *
を実行してから、IN
を使用しようとしましたが、それも機能しませんでした。
助言がありますか?
member of
条件を試してください:
IF 'Lb1' member of ais_array THEN
dbms_output.put_line('found');
END IF;
Oracleは、10gのコレクションを操作するためのいくつかの集合演算子を導入しました。 詳細についてはドキュメント をお読みください。
MEMBER OFは、ネストされたテーブルでのみ使用できます。連想配列で使用しようとしています。 「 'MEMBEROF'の呼び出しで引数の数またはタイプが間違っています」というエラーが発生します。
使用方法は次のとおりです。
DECLARE
TYPE clientele IS TABLE OF VARCHAR2 (64);
client_list_12 clientele := clientele ('Customer 1', 'Customer 2');
client_list_13 clientele := clientele ('Customer 1', 'Customer 3');
client_list_133 clientele
:= clientele ('Customer 1', 'Customer 3', 'Customer 3');
client_list_empty clientele := clientele ();
BEGIN
IF 'Customer 1' MEMBER OF client_list_12
THEN
DBMS_OUTPUT.put_line ('Customer 1 is in the 12 list');
END IF;
IF 'Customer 2' NOT MEMBER OF client_list_13
THEN
DBMS_OUTPUT.put_line ('Customer 2 is not in the 13 list');
END IF;
DBMS_OUTPUT.put_line ('List 133 contains ' || CARDINALITY (client_list_133) || ' items');
IF client_list_empty IS EMPTY
THEN
DBMS_OUTPUT.put_line ('Client list is empty');
END IF;
IF client_list_133 IS NOT EMPTY
THEN
DBMS_OUTPUT.put_line ('Client list 133 is not empty');
END IF;
END;