sql >> Databáze >  >> RDS >> Oracle

Mapování Oracle UDT obsahující asociativní pole v C#

Nejedná se o datový typ asociativního pole (známý také jako "index podle tabulky"); je to datový typ kolekce a je definován v rozsahu SQL.

Asociativní pole jsou k dispozici pouze v rozsahu PL/SQL a lze je definovat takto:

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

C# podporuje předávání asociativních polí do uložených procedur pomocí něčeho takového:

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# NE podporují předávání neasociativních polí.

Pokud chcete mít kolekci (neasociativní pole) definovanou jako člen uživatelem definovaného typu (UDT), pak budete muset použít mezikrok předání asociativního pole a jeho převod pomocí PL/SQL. do kolekce před jejím přiřazením k UDT. To vše můžete zabalit do uložené procedury v balíčku PL/SQL.




  1. Rekurzivní dotaz Oracle – data

  2. Jak vytvořit pole z SELECT vracejícího více než jeden řádek

  3. Jak se připojím a získám data z Google Cloud SQL pomocí PHP?

  4. Spusťte, abyste zabránili vkládání duplicitních dat dvou sloupců