Ich habe eine gespeicherte PL / SQL-Prozedur, die ein BLOB akzeptiertArgument (neben anderen Argumenten) und führt eine Einfügung des BLOBs in eine Tabelle aus. Wie kann ich ein großes (1 MB und größer) Byte-Array von .NET an die gespeicherte Prozedur übergeben.
Antworten:
2 für die Antwort № 1Ab Oracle 11.2 / ODP.Net v2.112.1.2 können Sie kein Array von BLOB
s. Von Oracle® Data Provider für .NET-Entwicklerhandbuch 11g Release 2 (11.2.0.3), Assoziative PL / SQL-Array-Bindung:
... ODP.NET unterstützt Bindungsparameter von PL / SQL Assoziativen Arrays welche die folgenden Datentypen enthalten.
BINARY_FLOAT CHAR DATE NCHAR NUMBER NVARCHAR2 RAW ROWID UROWID VARCHAR2
Die Verwendung nicht unterstützter Datentypen mit assoziativen Arrays kann einen ORA-600-Fehler verursachen.
Beachten Sie auch: Oracle-Foren: Weitergabe von assoziativen Arrays von BLOBs wird nicht unterstützt.
0 für die Antwort № 2
Wenn Sie Ihre SP-Abfrage einrichten (bereit für die Vorbereitung), legen Sie den Datentyp des Parameters fest OracleDbType.Blob
.
OracleParameter p = query.CreateParameter();
p.OracleDbType = OracleDbType.Blob;
p.Direction = ParameterDirection.Input;
Dann, direkt bevor Sie die Abfrage ausführen, setzen Sie einfach den Wert des Parameters auf das große BLOB, das Sie erwähnen.