PHP / Oracle: ошибка связывания переменной CLOB с большим файлом

Я связываю строковую переменную ($xml) в PHP, который является частью вызова процедуры в Oracle 12c, теперь данные для CLOB довольно большой, есть ли простой способ это исправить?

Я проверил загрузку с гораздо меньшим файлом, и все отлично работает, проблема только с большими файлами.

я пробовал XMLTYPE а также RAW на месте CLOB но ни один, казалось, не работал.

PHP

public function uploadXml($xml, $fileName)
{
$query = 'BEGIN XML_PKG.PR_LOAD_XML_FILE (
i_XML_DOC => :i_XML_DOC,
i_FILENAME => :i_FILENAME
);
END;';

$stmt = $this->connection->prepare($query);

$bindVars = array('i_XML_DOC' => $xml
, 'i_FILENAME' => $fileName
);

$stmt->execute($bindVars);
}

SQL

PROCEDURE PR_LOAD_XML_FILE (
i_XML_DOC IN CLOB,
i_FILENAME IN XML_DOCS.FILENAME%TYPE
);

ошибка

ORA-01460: unimplemented or unreasonable conversion requested

0

Решение

Вам нужно использовать дескриптор

$descriptor = oci_new_descriptor($db->getConnection(), OCI_DTYPE_LOB);
$descriptor->writetemporary($xml, OCI_TEMP_CLOB);
$stmt->bindParam(':V_XML', $descriptor, OCI_B_CLOB, -1);
0

Другие решения

Других решений пока нет …