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ď č. 1Od Oracle 11.2 / ODP.Net v2.112.1.2 nemôžete prejsť pole BLOB
s. 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.