最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PDO取Oracle lob大字段,當數(shù)據(jù)量太大無法取出的問題的解決辦法

 更新時間:2009年03月26日 11:20:09   作者:  
最近,做sns的項目,用PDO連接Oracle數(shù)據(jù)庫,讀取Clob字段,當數(shù)據(jù)量非常大的時候(上萬個字符),返回空值,從網(wǎng)上也沒有查到相關的資料。自己刻苦研究加上同事幫助,終于解決了。廢話就不說了,下面把內容貼出來。
首先,創(chuàng)建一個存儲過程 get_clob:
t_name:要查詢的表名;f_name:要查詢的字段名;u_id:表的主鍵,查詢條件;l_pos:截取的開始位置; l_amount :截取長度;
CREATE OR REPLACE PROCEDURE get_clob(t_name in varchar2, f_name in varchar, u_id in integer, l_pos in integer, l_amount in BINARY_INTEGER, ReturnValue out varchar2) is
rule_xml clob;
l_buffer varchar2(3999);
l_amount_ BINARY_INTEGER;
begin
execute immediate 'select ' ||f_name|| ' from ' ||t_name|| ' where id=:1' into rule_xml using u_id;
l_amount_:=l_amount;
DBMS_LOB.read(rule_xml, l_amount_, l_pos, l_buffer);
ReturnValue := l_buffer;
end get_clob;
然后是php的處理程序:
$content = "";
$num = 0;//clob字段長度
$stmt = $oracle->prepare("select length(content) as num from test where id = $id");
if ($stmt->execute()) { //zjh為查詢的條件
$row = $stmt->fetch();
$num = $row['NUM'];
}
$start = 1;//初始化開始位置
$len = 2500;//截取長度
$t_name = 'test';//操作表名
$f_name = 'content';//需要查詢的clob字段名
while ($start <= $num){
$ret='';
$sql = "begin get_clob(?,?,?,?,?,?); end;";
$stmt = $oracle->prepare($sql);
$stmt->bindParam(1, $t_name, PDO::PARAM_STR, 100);
$stmt->bindParam(2, $f_name, PDO::PARAM_STR, 100);
$stmt->bindParam(3, $id, PDO::PARAM_STR, 100);
$stmt->bindParam(4, $start, PDO::PARAM_STR, 100);
$stmt->bindParam(5, $len, PDO::PARAM_STR, 100);
$stmt->bindParam(6, $ret, PDO::PARAM_STR, 5000);
$stmt->execute();
$content .= $ret;
$start=$start+$len;
}
$oracle = null;
以上就是完整的解決辦法,這個方法不是俺的首創(chuàng),做過pb項目的人大多數(shù)應該比較熟悉這種操作。
php操作Oracle的資料網(wǎng)上還是比較少的,能解決問題的就更不多了,發(fā)出來跟大家分享一下,肯定還有其他比較好的解決辦法,歡迎跟大家一起探討。

相關文章

  • Windows10系統(tǒng)中Oracle完全卸載正確步驟

    Windows10系統(tǒng)中Oracle完全卸載正確步驟

    自己剛到公司就是熟悉數(shù)據(jù)庫的安裝卸載,所以分享一下學到的,下面這篇文章主要給大家介紹了關于Windows10系統(tǒng)中Oracle完全卸載正確步驟的相關資料,文章通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • Oracle數(shù)據(jù)庫實現(xiàn)建表、查詢方式

    Oracle數(shù)據(jù)庫實現(xiàn)建表、查詢方式

    這篇文章主要介紹了Oracle數(shù)據(jù)庫實現(xiàn)建表、查詢方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2007-02-02
  • MSSQL與Oracle數(shù)據(jù)庫事務隔離級別與鎖機制對比

    MSSQL與Oracle數(shù)據(jù)庫事務隔離級別與鎖機制對比

    事務隔離級別是并發(fā)控制的整體解決方案,其實際上是綜合利用各種類型的鎖和行版本控制,來解決并發(fā)問題。鎖是數(shù)據(jù)庫并發(fā)控制的內部機制,是基礎。對用戶來說,只有當事務隔離級別無法解決一些并發(fā)問題和需求時,才有必要在語句中手動設置鎖。
    2014-08-08
  • oracle 11g數(shù)據(jù)庫安全加固注意事項

    oracle 11g數(shù)據(jù)庫安全加固注意事項

    這篇文章主要介紹了oracle11g數(shù)據(jù)庫安全加固須謹慎 ,需要的朋友可以參考下
    2015-08-08
  • Oracle重建控制文件的實例教程

    Oracle重建控制文件的實例教程

    前些天在做Oracle數(shù)據(jù)庫恢復測試時,因為一些異常操作導致控制文件出了問題,數(shù)據(jù)庫無法正常使用,下面這篇文章就來給大家介紹了關于Oracle重建控制文件的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧
    2018-05-05
  • oracle報錯(ORA-00600)問題處理

    oracle報錯(ORA-00600)問題處理

    最近在做一個項目,使用的是Oracle數(shù)據(jù)庫,近兩天不知道怎么回事,告警日志里總是顯示這個錯誤(ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[],[])度娘了一下,終于找到解決方式,分享給大家
    2014-08-08
  • Oracle數(shù)據(jù)庫處理多媒體信息

    Oracle數(shù)據(jù)庫處理多媒體信息

    Oracle數(shù)據(jù)庫處理多媒體信息...
    2007-03-03
  • 解決pl/sql developer中數(shù)據(jù)庫插入數(shù)據(jù)亂碼問題(SSM項目開發(fā))

    解決pl/sql developer中數(shù)據(jù)庫插入數(shù)據(jù)亂碼問題(SSM項目開發(fā))

    這篇文章主要介紹了解決pl/sql developer中數(shù)據(jù)庫插入數(shù)據(jù)亂碼問題,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • oracle關聯(lián)查詢報invalid number錯誤的解決方法

    oracle關聯(lián)查詢報invalid number錯誤的解決方法

    這篇文章主要介紹了oracle關聯(lián)查詢報invalid number錯誤的解決方法,文中通過代碼示例和圖文結合的方式講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-09-09
  • 修改Oracle監(jiān)聽默認端口號1521的方法

    修改Oracle監(jiān)聽默認端口號1521的方法

    我們都知道,Oracle的監(jiān)聽默認端口是1521,但是如果系統(tǒng)上1521已經被占用或業(yè)務要求不用默認端口,又或者是為了安全,這個時候我們就需要修改監(jiān)聽的默認端口。下面這篇文章主要介紹了修改Oracle監(jiān)聽默認端口號1521的方法,需要的朋友可以參考下。
    2017-01-01

最新評論

宁晋县| 普陀区| 五河县| 嘉禾县| 乌审旗| 浮梁县| 金阳县| 简阳市| 三原县| 扬中市| 青川县| 奉新县| 沾化县| 绥中县| 阳泉市| 五河县| 三河市| 南安市| 土默特左旗| 通州区| 乐东| 贵德县| 正镶白旗| 屏边| 拉孜县| 土默特右旗| 孝昌县| 桦甸市| 河津市| 开阳县| 陵川县| 泗阳县| 灯塔市| 兴化市| 五寨县| 台南县| 荃湾区| 洱源县| 安化县| 瓦房店市| 尉犁县|