/ / ODP.NET Übergeben Sie Large-Byte-Array an PL / SQL gespeicherte Prozedur akzeptieren Blob -. NET, Orakel, Plsql, Blob, odp.net

ODP.NET Übergeben Sie große Byte-Array an PL / SQL gespeicherte Prozedur akzeptiert Blob -. NET, Oracle, PLSQL, Blob, odp.net

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 № 1

Ab Oracle 11.2 / ODP.Net v2.112.1.2 können Sie kein Array von BLOBs. 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.