国产探花免费观看_亚洲丰满少妇自慰呻吟_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);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华安县| 东乡族自治县| 蒲江县| 墨玉县| 囊谦县| 海盐县| 凤庆县| 江都市| 云霄县| 祁门县| 淄博市| 红河县| 中方县| 永州市| 安溪县| 化德县| 定结县| 扶沟县| 本溪| 崇左市| 仙桃市| 孙吴县| 米林县| 涞源县| 慈利县| 治多县| 南投市| 和林格尔县| 富宁县| 庄浪县| 邢台市| 舞钢市| 茂名市| 什邡市| 商河县| 灵武市| 满城县| 南京市| 阜南县| 威信县| 格尔木市|