使い方は、Oracle社の連想配列のSQLクエリ
-
19-09-2019 - |
質問
ODP.Net オの人に語り継ぐことができる連想配列としてのparams入OracleタからのC#.その素敵な特徴のない限り、利用しようと、データに含まれることを連想配列のsqlクエリ。
の理由は必要でコンテキストスイッチ-SQLステートメントを必要とSQLの種類および連想配列の渡されたPL/SQLこのような実際のとして定義されてPL/SQLのタイプです。私は定義されてPL/SQLパッケージ/手続き/機能PL/SQL型を型に作りこれらのオブジェクトは、SQL型の場合は提供できるより明確にするくださいばかりではありませんこう).
そこで質問であり、どのような方法を使うにPL/SQLを連想配列paramるようになり、必要に応じて物内での手続きで使用できるsql文のようになります:
OPEN refCursor FOR
SELECT T.*
FROM SOME_TABLE T,
( SELECT COLUMN_VALUE V
FROM TABLE( associativeArray )
) T2
WHERE T.NAME = T2.V;
この例では、"associativeArray"がテーブルのvarchar2(200)物価連動によるPLS_INTEGER.クライアントまで、フルのC#のassociativeArry paramがデstring[].
気軽に話その他の方法でこれを使用する他の連想配列が知ら事前にそれらの解決は受け付けません。ものに興味がある私にとって見ても選択肢としてあります。
解決
私はこのようなデータベースの種類を作成します:
create type v2t as table of varchar2(30);
/
そして手順でます:
FOR i IN 1..associativeArray.COUNT LOOP
databaseArray.extend(1);
databaseArray(i) := associativeArray(i);
END LOOP;
OPEN refCursor FOR
SELECT T.*
FROM SOME_TABLE T,
( SELECT COLUMN_VALUE V
FROM TABLE( databaseArray )
) T2
WHERE T.NAME = T2.V;
(databaseArrayが型V2Tであると宣言される。)
他のヒント
利用できません連想配列のSQL範囲でのみ使用可能、PL/SQLます。
る方法は、どのようなものがあり地図の連想配列のコレクション(使用できるSQLの範囲の場合はコレクション型定義されるSQL範囲にPL/SQL範囲).
SQL:
CREATE TYPE VARCHAR2_200_Array_Type AS TABLE OF VARCHAR2(200);
/
PL/SQL
DECLARE
TYPE associativeArrayType IS TABLE OF VARCHAR2(200) INDEX BY PLS_INTEGER;
i PLS_INTEGER;
associativeArray associativeArrayType;
array VARCHAR2_200_Array_Type;
cur SYS_REFCURSOR;
BEGIN
-- Sample data in the (sparse) associative array
associativeArray(-2) := 'Test 1';
associativeArray(0) := 'Test 2';
associativeArray(7) := 'Test 3';
-- Initialise the collection
array := VARCHAR2_200_Array_Type();
-- Loop through the associative array
i := associativeArray.FIRST;
WHILE i IS NOT NULL LOOP
array.EXTEND(1);
array(array.COUNT) := associativeArray(i);
i := associativeArray.NEXT(i);
END LOOP;
-- Use the collection in a query
OPEN cur FOR
SELECT *
FROM your_table
WHERE your_column MEMBER OF array;
END;
/
所属していません StackOverflow