ストアドプロシージャコードをOracleからDB2に移行していますが、配列のメンバーシップをテストする方法を見つける必要があります(OracleにはMEMBER OF
演算子があります)。
ストアドプロシージャは、とりわけユーザーの配列を使用します(JDBCを介してJavaコードからパラメーターとして受信されます)。その配列でメンバーシップテストを実行するための最も効率的な方法を見つけたいと思います。Oracleを使用して、次のことを行います。
FOR r IN (SELECT * FROM acls WHERE acls.id = curid) LOOP
IF r.user MEMBER OF users THEN
RETURN 1;
END IF;
END LOOP;
MEMBER OF
ただし、DB2に相当するものは見つかりません。
FOR r AS SELECT * FROM acls WHERE acls.id = curid DO
IF r.user ????? users THEN
RETURN 1;
END IF;
END FOR;
私は2つの選択肢を見ます:
- 「手動で」テストを実行するには、すべての配列要素を別の内部ループで実行します。
- 配列ではなく単一の文字列を使用し、
LIKE
ベースのパターンマッチングを使用します。
もっと良い方法はありますか?配列は外部コードからのものであり、私ができるテーブルや関連するものとして渡すことはできないことに注意してくださいJOIN
。