Oracle查询插入空Blob

问题描述:

我想在表格的Blob列中插入文本文件。我正在使用PHP。 我使用的查询是:Oracle查询插入空Blob

$qry = "INSERT INTO blobTable(date_input,file_name,blob_CONTENT) VALUES (SYSDATE,'$fileName',empty_blob()) RETURNING blob_CONTENT INTO :blob_CONTENT"; 
$stmt = OCIparse($conn,$qry); 
$blob = ocinewdescriptor($conn, OCI_D_LOB); 
ocibindbyname($stmt, ":Blob_CONTENT", $blob, -1, OCI_B_BLOB); 
ociexecute($stmt); 
$result = oci_num_rows($stmt); 
ocicommit($conn); 
ocifreestatement($stmt); 
$blob->free(); 

而是将其插入该表是空BLOB。我也尝试过utl_raw.cast_to_raw,但它有2K的限制,但我的文件预计大于10M。

我该怎么修改我的查询?

+0

为什么mysql ?????? –

好吧我通过改变代码的工作得到了它的工作。

$tmpName = $_FILES['datafile']['tmp_name']; //Temporary name of my file 
$qry = "INSERT INTO fileTable(date_input,file_name,file_CONTENT) VALUES (SYSDATE,'$fileName',empty_blob()) RETURNING file_CONTENT INTO :file_CONTENT"; 
$stmt = OCIparse($conn,$qry); 
$blob = ocinewdescriptor($conn, OCI_D_LOB); 
ocibindbyname($stmt, ":file_CONTENT", $blob, -1, OCI_B_BLOB); 
ociexecute($stmt, OCI_DEFAULT); 
if ($blob->savefile($tmpName)){ 
//Missed this step initially. 
    oci_commit($conn); 
    echo "Blob successfully uploaded\n"; 
} 
else 

{ 
    echo "Couldn't upload Blob\n"; 
} 
$result = oci_num_rows($stmt); 
ocicommit($conn); 
ocifreestatement($stmt); 
$blob->free();