$stmt = OCIParse($conn,"INSERT INTO news (id,title,content1,picture) VALUES (seq_news.NEXTVAL,'$title','$btext_type',EMPTY_BLOB()) RETURNING picture INTO :PICTURE"); 
$lob = OCINewDescriptor($conn,OCI_D_LOB); 
OCIBindByName($stmt, ':PICTURE',&$lob,-1,OCI_B_BLOB); 
OCIExecute($stmt); 
if($lob->savefile($btext)){ 
OCICommit($conn); 
echo "上传成功〈br〉"; 
}else{ 
echo "上传失败〈br〉"; 
} 各位大侠,看看程序有什么问题?????????????

解决方案 »

  1.   

    参考这个东西:
    php中如何同时向oracle插入多个clob类型列数据? 
     hoomail 发表于 2002-5-30 16:38 PHP编程代码是:
      $sql="insert into articles(1,"你好",EMPTY_CLOB(),EMPTY_CLOB()) RETURNING(content_1,content_2) INTO(:content_1,:content_2)";
    $oracle_exec = OCIParse($oracle_conn,$sql);
      $lob = OCINewDescriptor($oracle_conn, OCI_D_LOB);
      $ccc = OCINewDescriptor($oracle_conn, OCI_D_LOB);
      OCIBindByName($oracle_exec,':content_1',&$lob,-1,OCI_B_CLOB);     OCIBindByName($oracle_exec,':content_2',&$ccc,-1,OCI_B_CLOB);
        if(!OCIExecute($oracle_exec,OCI_DEFAULT)){
          echo "  Execution failed";
          exit;
        }
          if($lob->save($row[3])){
            OCICommit($oracle_conn);
            echo $row["id"]." content_1 上传成功 ";
          }else{
            echo $row["id"]."content_1 上传失败 ";
          }
          if($ccc->save($row[17])){
            OCICommit($oracle_conn);
            echo $row["id"]." count_2 上传成功 ";
          }else{
            echo $row["id"]." count_2 上传失败 ";
          }
        OCIFreeDesc($lob);
        OCIFreeDesc($ccc);
    结果,content_1数据入库,content_2没有入库,还报错:
    Warning: OCILobWrite: ORA-22990: LOB locators cannot span transactions in ****************
    请各位大侠指点!
     
     
    PHP插入CLOB类型不能直接插! 
     蓝蝴蝶 发表于 2002-5-30 17:08 PHP编程 ←返回版面          [快速返回] $stmtJBXX = OCIParse($Conn,$strJBXX);
    $objJBXX = OCINewDescriptor($Conn, OCI_D_LOB); 
       OCIBindByName($stmtJBXX, ':C_JYJS', &$objJBXX, -1,       OCI_B_CLOB); 
    OCIExecute($stmtJBXX,OCI_DEFAULT);
       if($objJBXX->save($C_JYJS)){ 
                OCICommit($Conn);     
        } 
            //释放LOB对象 
            OCIFreeDesc($objJBXX); 
            OCIFreeStatement($stmtJBXX);以上代码仅供参考,要用OCINewDescriptor进行解释后才可以将
    ':C_JYJS'大文本存入,注意类型:很重要,与CONN对象连接时用OCI_D_LOB类型,绑定时用OCI_B_CLOB。多试几次。