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

SQL Anywhere 12.0.1 (Deutsch) » MobiLink - Serveradministration » MobiLink-Servertechnologie » MobiLink - konsolidierte Datenbanken » Konsolidierte Oracle-Datenbank

 

Oracle-VARRAY

Der iAnywhere Solutions 12 - Oracle ODBC-Treiber unterstützt die Verwendung des Oracle-Datentyps VARRAY in gespeicherten Prozeduren. Die Verwendung von VARRAY in Upload-Skripten (upload_insert, upload_update und upload_delete), die in gespeicherten Prozeduren geschrieben sind, können die Performance des MobiLink-Servers im Vergleich zu Upload-Skripten verbessern, die in gespeicherten Prozeduren geschrieben sind und VARRAY nicht verwenden. Einfache SQL-Anweisungen, wie INSERT, UPDATE und DELETE, ohne gespeicherte Prozeduren, bieten für gewöhnlich die beste Performance. Die Verwendung von gespeicherten Prozeduren mit der VARRAY-Technik bietet jedoch eine Möglichkeit zur Anwendung von Geschäftslogik, die von einfachen Anweisungen nicht zur Verfügung gestellt wird.

 VARRAY-Beispiel

Das folgende einfache Beispiel verwendet VARRAY:

  1. Erstellen Sie eine Tabelle mit dem Namen my_table, die 3 Spalten enthält.

    create table my_table ( pk integer primary key, c1 number(20), c2 varchar2(4000) )
  2. Erstellen Sie mithilfe von VARRAYs benutzerdefinierte Sammlungstypen.

    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);

    Der Datentyp my_varchar ist als VARRAY definiert, das 100 Elemente enthält, und jedes Element ist ein varchar2-Datentyp mit der Breite 8000. Die Breite muss doppelt so groß sein wie die für my_table festgelegte Breite.

  3. Erstellen Sie gespeicherte Prozeduren für das Einfügen.

    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-Einschränkungen