PHP/Oracle:CLOB绑定变量错误,文件太大
我在PHP中绑定了一个字符串变量(PHP/Oracle:CLOB绑定变量错误,文件太大,php,oracle,binding,procedure,Php,Oracle,Binding,Procedure,我在PHP中绑定了一个字符串变量($xml),这是Oracle 12c中调用过程的一部分,现在CLOB的数据非常大,有没有简单的方法解决这个问题 我用一个小得多的文件检查了上传,一切正常,问题只发生在大文件上 我尝试了XMLTYPE和RAW来代替CLOB,但两种方法似乎都不起作用 PHP public function uploadXml($xml, $fileName) { $query = 'BEGIN XML_PKG.PR_LOAD_XML_FILE ( i_XML
$xml
),这是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
您需要使用描述符
$descriptor = oci_new_descriptor($db->getConnection(), OCI_DTYPE_LOB);
$descriptor->writetemporary($xml, OCI_TEMP_CLOB);
$stmt->bindParam(':V_XML', $descriptor, OCI_B_CLOB, -1);