/ / ODP.NET Prejdite veľké bajtové pole do PL / SQL uloženej procedúry prijímania blob - .net, oracle, plsql, blob, odp.net

ODP.NET Prejdite veľké bajtové pole do PL / SQL uloženej procedúry prijímania blob - .net, oracle, plsql, blob, odp.net

Mám PL / SQL uloženú procedúru prijímajúcu BLOBargument (okrem iných argumentov) a vykoná vloženie BLOB do tabuľky. Ako môžem odovzdať veľké (1 MB a väčšie) bajtové pole z .NET do uloženej procedúry.

odpovede:

2 pre odpoveď č. 1

Od Oracle 11.2 / ODP.Net v2.112.1.2 nemôžete prejsť pole BLOBs. z Sprostredkovateľ Oracle® Data for .NET Developer's Guide 11g Release 2 (11.2.0.3), PL / SQL Associative Array Binding:

... ODP.NET podporuje väzobné parametre asociatívnych polí PL / SQL ktoré obsahujú nasledujúce typy dát.

  BINARY_FLOAT
CHAR
DATE
NCHAR
NUMBER
NVARCHAR2
RAW
ROWID
UROWID
VARCHAR2

Použitie nepodporovaných typov údajov s asociačnými políčkami môže spôsobiť chybu ORA-600.

Poznámka tiež: Fóra Oracle: Nepodporuje sa asociačné pole BLOBs.


0 pre odpoveď č. 2

Keď nastavujete svoj dotaz SP (pripravený na prípravu), nastavte typ údajov parametra na OracleDbType.Blob.

OracleParameter p = query.CreateParameter();
p.OracleDbType = OracleDbType.Blob;
p.Direction = ParameterDirection.Input;

Potom tesne pred spustením dotazu jednoducho nastavte hodnotu parametra na veľkú BLOB, ktorú spomínate.