Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » Mobile Link - サーバ管理 » Mobile Link サーバ・テクノロジの使用 » Mobile Link 統合データベース » Oracle 統合データベース

 

Oracle varray の使用

Oracle 用の ODBC ドライバである iAnywhere Solutions 11 - Oracle では、ストアド・プロシージャでの Oracle varray の使用がサポートされます。ストアド・プロシージャ内に作成されたアップロード・スクリプト (upload_insert、upload_update、upload_delete) で varray を使用すると、ストアド・プロシージャ内に作成されたアップロード・スクリプトで varray を使用しない場合と比べて、Mobile Link サーバのパフォーマンスが向上することがあります。ストアド・プロシージャを使用しない INSERT、UPDATE、DELETE などの単純な SQL 文を使用すると、通常はパフォーマンスが最高になるという利点はありますが、ストアド・プロシージャを使用することにより (varray を使用する方法を含む)、ビジネス論理を適用できるようになります。

varray の例

次に、varray を使用する簡単な例を示します。

  1. 3 つのカラムが含まれる my_table という名前のテーブルを作成します。

    create table my_table ( pk integer primary key, c1 number(20), c2 varchar2(4000) )
  2. varray を使用するユーザ定義のコレクション型を作成します。

    create type my_integer is varray(100) of integer;
    create type my_number is varray(100) of number(20);
    create type my_varchar is varray(100) of varchar2(8000);

    my_varchar は、100 個の要素を含む varray として定義されます。各要素のデータ型は varchar2 で、幅は 8000 です。この幅は、my_table に指定された幅の 2 倍の大きさです。

  3. 挿入用のストアド・プロシージャを作成します。

    create or replace procedure my_insert_proc( pk_v my_integer, c1_v my_number, c2_v my_varchar )
    is
    c2_value my_varchar;
    begin
          c2_value := c2_v;  -- Work around an Oracle bug
          FORALL i in 1 .. pk_v.COUNT
                insert into my_table ( pk, c1, c2 ) values( pk_v(i), c1_v(i), c2_value(i) );
    end;
    
varray の制限

ストアド・プロシージャで varray を使用するときは、次の制限があります。