sql >> Database teknologi >  >> RDS >> Oracle

Mapping Oracle UDT indeholdende associativ array i C#

Det er ikke en associativ array-datatype (også kendt som en "indeks efter tabel"); det er en indsamlingsdatatype og er defineret i SQL-omfanget.

Associative arrays er kun tilgængelige i PL/SQL-omfanget og kan defineres som:

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

C# understøtter videregivelse af associative arrays til lagrede procedurer ved hjælp af noget som dette:

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# gør IKKE understøtter videregivelse af ikke-associative arrays.

Hvis du vil have en samling (et ikke-associativt array) defineret som et medlem af en brugerdefineret type (UDT), skal du bruge et mellemtrin til at sende et associativt array og derefter bruge PL/SQL til at konvertere det til en samling, før den tildeles til UDT. Du kan pakke alt dette ind i en lagret procedure i en PL/SQL-pakke.




  1. SQL, Unikke og Primære nøgler

  2. Sideinddeling i BOB PHP

  3. Loop MySQL for at indsætte data i tabellen

  4. Brug af MySQL LOAD DATA INFILE med ikke-udskrivbare tegnafgrænsere