Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Zuordnen von Oracle UDT mit assoziativem Array in C#

Das ist kein assoziativer Array-Datentyp (auch bekannt als "Index nach Tabelle"); es ist ein Sammlungsdatentyp und wird im SQL-Bereich definiert.

Assoziative Arrays sind nur im PL/SQL-Bereich verfügbar und können wie folgt definiert werden:

CREATE PACKAGE package_name AS
  TYPE STRING_MAP IS TABLE OF VARCHAR2(50) INDEX BY BINARY_INTEGER;
END;
/

C# unterstützt die Übergabe von assoziativen Arrays an gespeicherte Prozeduren mit etwas wie dem Folgenden:

OracleParameter parameter = new OracleParameter();
parameter.ParameterName  = "YourParameterName";
parameter.OracleDbType   = OracleDbType.Varchar2;
parameter.Direction      = ParameterDirection.Input;
parameter.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
parameter.Value          = new String[5]{"a","b","c","d","e"};

C# tut das NICHT unterstützt das Übergeben nicht-assoziativer Arrays.

Wenn Sie eine Sammlung (ein nicht assoziatives Array) als Mitglied eines benutzerdefinierten Typs (UDT) definieren möchten, müssen Sie einen Zwischenschritt verwenden, um ein assoziatives Array zu übergeben und es dann mit PL/SQL zu konvertieren zu einer Sammlung hinzufügen, bevor Sie sie dem UDT zuweisen. Sie können all dies in eine gespeicherte Prozedur in einem PL/SQL-Paket einpacken.