<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Dict.CN 在線詞典, 英語學習, 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統計

    留言簿(23)

    積分與排名

    優秀學習網站

    友情連接

    閱讀排行榜

    評論排行榜

    處理CLOB字段的動態PL/SQL (zhuan)

    動態PL/SQL,對CLOB字段操作可傳遞表名table_name,表的唯一標志字段名field_id,clob字段名field_name,記錄號v_id,開始處理字符的位置v_pos,傳入的字符串變量v_clob

    修改CLOB的PL
    /SQL過程:updateclob

    create or replace procedure updateclob(
         table_name     
    in varchar2,
         field_id        
    in varchar2
         field_name     
    in varchar2,
         v_id           
    in number,
         v_pos          
    in number,
         v_clob         
    in varchar2)
    is
         lobloc     clob;
         c_clob     
    varchar2(32767);
         amt         binary_integer;
         pos         binary_integer;
         query_str     
    varchar2(1000);
    begin
       pos:
    =v_pos*32766+1;
       amt :
    = length(v_clob);
       c_clob:
    =v_clob;
       query_str :
    ='select '||field_name||' from '||table_name||' where '||field_id||'= :id for update ';
    --initialize buffer with data to be inserted or updated
       EXECUTE IMMEDIATE query_str INTO lobloc USING v_id;
    --from pos position, write 32766 varchar2 into lobloc
       dbms_lob.write(lobloc, amt, pos, c_clob);
       
    commit;
    exception
       
    when others then
       
    rollback;
    end;
    /


    用法說明:
    在插入或修改以前,先把其它字段插入或修改,CLOB字段設置為空empty_clob(),
    然后調用以上的過程插入大于2048到32766個字符。
    如果需要插入大于32767個字符,編一個循環即可解決問題。

    查詢CLOB的PL
    /SQL函數:getclob


    create or replace function getclob(
         table_name     
    in varchar2,
         field_id        
    in varchar2
         field_name     
    in varchar2,
         v_id     
    in number,
         v_pos     
    in numberreturn varchar2
    is
         lobloc     clob;
         buffer     
    varchar2(32767);
         amount     
    number := 2000;
         offset     
    number := 1;
         query_str     
    varchar2(1000);
    begin
       query_str :
    ='select '||field_name||' from '||table_name||' where '||field_id||'= :id ';
    --initialize buffer with data to be found
       EXECUTE IMMEDIATE query_str INTO lobloc USING v_id;
       offset:
    =offset+(v_pos-1)*2000
    --read 2000 varchar2 from the buffer
       dbms_lob.read(lobloc,amount,offset,buffer);
           
    return buffer;
    exception
        
    when no_data_found then
           
    return buffer;
    end;
    /

    用法說明:

    用select getclob(table_name,field_id,field_name,v_id,v_pos) 
    as partstr from dual;
    可以從CLOB字段中取2000個字符到partstr中,
    編一個循環可以把partstr組合成dbms_lob.getlength(field_name)長度的目標字符串。

    調用PL
    /SQL過程的方法:
        SQL
    *PLUS        SQL> EXEC 過程名[(參數)];
        
    Procedure Builder    PL/SQL>過程名[(參數)];     
        JAVA        CALL { 過程名
    [(參數)] };
        PHP        
    BEGIN { 過程名[(參數)] } END;

    posted on 2008-04-11 11:40 都市淘沙者 閱讀(898) 評論(0)  編輯  收藏 所屬分類: Oracle/Mysql/Postgres/

    主站蜘蛛池模板: 中文字幕亚洲天堂| 亚洲精品视频免费观看| 亚洲好看的理论片电影| 日本人成在线视频免费播放| 国产av无码专区亚洲av桃花庵| 九九免费久久这里有精品23| 亚洲欧洲国产成人综合在线观看| 污污视频免费观看网站| 亚洲日本一区二区一本一道| 特级毛片A级毛片免费播放| 亚洲日本va午夜中文字幕久久| 国产精品免费αv视频| 国产∨亚洲V天堂无码久久久| 91视频精品全国免费观看| 亚洲va久久久噜噜噜久久| 热re99久久6国产精品免费| 亚洲一级免费视频| 麻豆国产精品入口免费观看| 精品在线观看免费| 亚洲日韩av无码| 久久久久久曰本AV免费免费| 精品亚洲456在线播放| 免费一级国产生活片| 免费无码黄网站在线看| 亚洲精品视频在线观看视频| 最近的中文字幕大全免费版| 免费的黄色的网站| 久久精品国产亚洲香蕉| 99久久免费精品国产72精品九九| 亚洲va中文字幕| 亚洲精品国产品国语在线| 亚洲最大免费视频网| 豆国产96在线|亚洲| 国产亚洲一区二区精品| 亚洲人成网站免费播放| 午夜免费国产体验区免费的| 久久久无码精品亚洲日韩蜜臀浪潮| 女人张开腿等男人桶免费视频| 无码免费又爽又高潮喷水的视频 | 久久精品视频免费播放| 中文字幕乱码亚洲无线三区|