2012-02-21 4 views
0

Iは連想配列に列の値が存在する行のみを選択するにはどうすればよいですか?

Oracle.DataAccess.Client.OracleParameter

を用いPLSQLプロシージャにIEnumerableを渡すことができ、それは明らかに連想配列に変換します。

私がやりたかったのは、既存のクエリを受け取り、それを選択内にラップして、セット内で終わる唯一の行が配列内の項目の1つとして存在する値の行になるようにすることです。

その構文は何ですか?

SELECT ... WHERE INのバリエーションがこのトリックを行いますか?

+0

IEnumerableのためにそれを行う方法を知っていれば、配列は同じではありませんか? – Magnus

+1

この例が役に立ちましたか? http://www.asktheoracle.net/how-to-convert-local-plsql-table-to-table-i-can-select-from.html –

+0

@Magnus私はあなたが私を誤解したと思います。私が知る限り、IEnumerableは連想配列に変換されます。私はその配列をどこで使うのかわかりません。 – BigOmega

答えて

0

TABLE() Function and Column_valueを使用して、IEnumerableをネストした表に変換する方法が見つかった場合は、あなたに適しています。 スキーマ・レベルでネストした表の型を作成します。

Create type ntt is table of NUMBER ; 

とサンプルコード:

declare 
    nt ntt := ntt(1, 2); --:= (1,2); 
begin 
    for i in (select rownum as id 
        from all_objects 
     where rownum in (select column_value from TABLE(nt))) LOOP 
DBMS_OUTPUT.PUT_LINE('HERE IS = ' || i.id); 
END LOOP; 
END; 

出力は次のとおりです。

HERE IS = 1 
HERE IS = 2 

あなたはまた、PLSQLブロック内の連想配列からネストした表型を移入できます。これは私がコレクションの要素を使用して知っている方法ですWHERE .. IN

関連する問題