ODP.NET Передача большого байтового массива в хранимую процедуру PL / SQL, принимающую BLOB-объекты - PullRequest
0 голосов
/ 14 апреля 2011

У меня есть хранимая процедура PL / SQL, принимающая аргумент BLOB (среди прочих аргументов), и выполняет вставку BLOB в таблицуКак передать большой (1 МБ и более) байтовый массив из .NET в хранимую процедуру.

Ответы [ 2 ]

2 голосов
/ 19 декабря 2011

Начиная с Oracle 11.2 / ODP.Net v2.112.1.2, вы не можете передать массив BLOB s.Из Oracle® Data Provider для .NET Руководство разработчика, выпуск 11g 2 (11.2.0.3), привязка ассоциативного массива PL / SQL :

... ODP.NET поддерживает параметры привязкиассоциативных массивов PL / SQL, которые содержат следующие типы данных.

  BINARY_FLOAT
  CHAR
  DATE
  NCHAR
  NUMBER
  NVARCHAR2
  RAW
  ROWID
  UROWID
  VARCHAR2   

Использование неподдерживаемых типов данных с ассоциативными массивами может вызвать ошибку ORA-600.

Примечание также: Форумы Oracle: передача ассоциативного массива больших двоичных объектов не поддерживается .

0 голосов
/ 18 апреля 2011

Когда вы настраиваете свой SP-запрос (готовитесь к его подготовке), установите тип данных параметра на OracleDbType.Blob.

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

Тогда перед запуском запроса просто установитезначение параметра для большого BLOB, о котором вы говорите.

...