国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

long查詢結果轉換為varchar2類型

2019-11-09 13:41:30
字體:
來源:轉載
供稿:網友

來自Thomas Kyte 《Oracle9i/10g/11g編程藝術》 12章節中.由于long的操作限制,那么在操作long之前可以將該類型的結果轉換為varchar2然后再使用,long_help.substr_of的基本意思是將long結果的的前4000字節轉換為varchar2類型.如果long的數據超過了4000字節,那么可以將循環調用此函數

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182createor replace package long_helpauthidcurrent_userasfunctionsubstr_of( p_query invarchar2,p_from innumber,p_for  innumber,p_name1invarchar2 defaultNULL,p_bind1invarchar2 defaultNULL,p_name2invarchar2 defaultNULL,p_bind2invarchar2 defaultNULL,p_name3invarchar2 defaultNULL,p_bind3invarchar2 defaultNULL,p_name4invarchar2 defaultNULL,p_bind4invarchar2 defaultNULL )returnvarchar2;end; createor replace package body long_helpas    g_cursor number := dbms_sql.open_cursor;    g_query  varchar2(32765);PRocedurebind_variable( p_name invarchar2, p_value invarchar2 )isbegin    if ( p_name isnot null )    then        dbms_sql.bind_variable( g_cursor, p_name, p_value );    endif;end; functionsubstr_of( p_query invarchar2,  p_from innumber,  p_for  innumber,  p_name1invarchar2 defaultNULL,  p_bind1invarchar2 defaultNULL,  p_name2invarchar2 defaultNULL,  p_bind2invarchar2 defaultNULL,  p_name3invarchar2 defaultNULL,  p_bind3invarchar2 defaultNULL,  p_name4invarchar2 defaultNULL,  p_bind4invarchar2 defaultNULL )returnvarchar2as    l_buffer       varchar2(4000);    l_buffer_len   number;begin    if ( nvl(p_from,0) <= 0 )    then        raise_application_error        (-20002,'From must be >= 1 (positive numbers)' );    endif;    if ( nvl(p_for,0) notbetween 1 and4000 )    then        raise_application_error        (-20003,'For must be between 1 and 4000' );    endif;    if ( p_query <> g_query org_query isNULL )    then        if ( upper(trim(nvl(p_query,'x')))notlike 'SELECT%')        then            raise_application_error            (-20001,'This must be a select only' );        endif;        dbms_sql.parse( g_cursor, p_query, dbms_sql.native );        g_query := p_query;    endif;    bind_variable( p_name1, p_bind1 );    bind_variable( p_name2, p_bind2 );    bind_variable( p_name3, p_bind3 );    bind_variable( p_name4, p_bind4 );    dbms_sql.define_column_long(g_cursor, 1);    if (dbms_sql.execute_and_fetch(g_cursor)>0)    then        dbms_sql.column_value_long        (g_cursor, 1, p_for, p_from-1,         l_buffer, l_buffer_len );    endif;    returnl_buffer;endsubstr_of;end;

使用方法:查詢DBA_TAB_PARTITIONS中的HIGH_VALUE

1234567891011121314151617SELECT*  FROM(SELECTTABLE_OWNER,                TABLE_NAME,                PARTITION_NAME,                LONG_HELP.SUBSTR_OF('SELECT HIGH_VALUEFROM   DBA_TAB_PARTITIONS WHERE TABLE_OWNER=:TABLE_OWNERAND TABLE_NAME=:TABLE_NAMEAND PARTITION_NAME=:PARTITION_NAME',                                     1,                                     4000,                                     'TABLE_OWNER',                                     TABLE_OWNER,                                     'TABLE_NAME',                                     TABLE_NAME,                                     'PARTITION_NAME',                                     PARTITION_NAME) HIGH_VALUE           FROMDBA_TAB_PARTITIONS);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 舒城县| 贵德县| 嵊州市| 鄂州市| 阿拉善左旗| 秦皇岛市| 邵阳县| 葫芦岛市| 阜新市| 高淳县| 岳阳县| 曲松县| 峡江县| 定安县| 咸宁市| 遂平县| 永州市| 枞阳县| 南和县| 延川县| 江西省| 区。| 彝良县| 大冶市| 年辖:市辖区| 景东| 新野县| 缙云县| 沙坪坝区| 类乌齐县| 青铜峡市| 无棣县| 荆州市| 肥西县| 通渭县| 上饶市| 金川县| 侯马市| 滕州市| 襄樊市| 建湖县|