Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/Oracle:CLOB绑定变量错误,文件太大_Php_Oracle_Binding_Procedure - Fatal编程技术网

PHP/Oracle:CLOB绑定变量错误,文件太大

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

我在PHP中绑定了一个字符串变量(
$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);