質問

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;
/
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top