タイプがネストされたテーブルの 2 つの PLSQL 配列があります。
TYPE nested_typ IS TABLE OF VARCHAR2(21);
nt1 nested_typ := nested_typ('abc','def','123');
nt2 nested_typ := nested_typ('123');
上記の例について、これら2つのコレクションの違いを知りたい: 'def', 'abc'
これを行う簡単な方法を提案してください。
ありがとう...
タイプがネストされたテーブルの 2 つの PLSQL 配列があります。
TYPE nested_typ IS TABLE OF VARCHAR2(21);
nt1 nested_typ := nested_typ('abc','def','123');
nt2 nested_typ := nested_typ('123');
上記の例について、これら2つのコレクションの違いを知りたい: 'def', 'abc'
これを行う簡単な方法を提案してください。
ありがとう...
これらは単純な型であるため、PL/SQL のセット比較演算子を使用できます。あなたの場合、使用したい(SQL演算子MULTISET EXCEPT
と同じように機能します)。MINUS
3 番目のネストされたテーブルを指定すると、次のようにコーディングできます。
nt3 := nt1 multiset except nt2;
「配列に重複する要素がない場合、これは正常に機能します... nt1 で出現する '123' をすべて削除する他の方法はありますか?」
はい、使用しますmultiset except distinct
。
多くのコレクション演算子があります。予想どおり、これらは PL/SQL ドキュメントでカバーされています。 ここで見つけてください。
基本的に、ネストされたテーブルにはマイナス機能を使用します。10g には、MULTISET EXCEPT と呼ばれる新しい機能があります。マイナスの出力を変数に保存する場合は、以下の手順に従ってください
declare var1 <nested table type>
コードの開始セクションで、以下のコードを記述してマイナス出力を取得します
var1:=var2 multiset except var3;
これをチェックしてください
Declare
TYPE nested_typ IS TABLE OF VARCHAR2(21);
nt1 nested_typ := nested_typ('abc','def','123');
nt2 nested_typ := nested_typ('123');
nt3 nested_typ;
Begin
nt3 := nt1 multiset except nt2;
dbms_output.put_line(nt3(1)||' '||nt3(2));
end;
お役に立てれば。