2017-09-08 2 views
0

格納される文字列のサイズは<です。格納される文字列のサイズが32より大きい場合、display_rawはnullを返します。さらに調査ではvarchar型のサイズのOracle display_raw以上32

はdisplay_rawがこの背後に何らかの理由があるの少ない32 https://github.com/gregrahn/oracle-scripts/blob/master/display_raw.sql

その後、サイズの唯一のVARCHAR2をサポートしていることを発見しましたか?そしてこれを克服し、長さが32以上の文字列の値を低くして表示する方法は?

何か助けていただければ幸いです。

+0

32Kは、varchar2の長さに対するOracleの制限です。 – Rene

+0

しかし、サイズが32文字を超える文字列では機能しません。 – Lakshmikantha

+0

申し訳ありませんが、誤解されています。リンク内のコードは、いくつかの変数を32文字に制限します。その機能が何をしているのか分かりません。 – Rene

答えて

1

あなたは関数内のcv、cnv abd cc変数のサイズを増やすことができますか? 下記のコードを参照

-- 
-- display_raw.sql 
-- 
-- DESCRIPTION 
-- helper function to print raw representation of column stats minimum or maximum 
-- 
-- Created by Greg Rahn on 2011-08-19. 
-- 

create or replace function display_raw (rawval raw, type varchar2) 
return varchar2 
is 
    cn  number; 
    cv  varchar2(8192); 
    cd  date; 
    cnv nvarchar2(8192); 
    cr  rowid; 
    cc  char(2000); 
    cbf binary_float; 
    cbd binary_double; 
begin 
    if (type = 'VARCHAR2') then 
     dbms_stats.convert_raw_value(rawval, cv); 
     return to_char(cv); 
    elsif (type = 'DATE') then 
     dbms_stats.convert_raw_value(rawval, cd); 
     return to_char(cd); 
    elsif (type = 'NUMBER') then 
     dbms_stats.convert_raw_value(rawval, cn); 
     return to_char(cn); 
    elsif (type = 'BINARY_FLOAT') then 
     dbms_stats.convert_raw_value(rawval, cbf); 
     return to_char(cbf); 
    elsif (type = 'BINARY_DOUBLE') then 
     dbms_stats.convert_raw_value(rawval, cbd); 
     return to_char(cbd); 
    elsif (type = 'NVARCHAR2') then 
     dbms_stats.convert_raw_value(rawval, cnv); 
     return to_char(cnv); 
    elsif (type = 'ROWID') then 
     dbms_stats.convert_raw_value(rawval, cr); 
     return to_char(cr); 
    elsif (type = 'CHAR') then 
     dbms_stats.convert_raw_value(rawval, cc); 
     return to_char(cc); 
    else 
     return 'UNKNOWN DATATYPE'; 
    end if; 
end; 
/
+0

しかし、これは私が定義したものではなく、Oracleの機能です。 – Lakshmikantha

+0

これはリンクhttps://github.com/gregrahn/oracle-scripts/blob/master/display_raw.sqlからの機能です - そこには複雑なロジックはありませんので、関数のソースコードをコピーし、マイナーチェンジしてそれを再コンパイル – are

+0

合意。私はそれを試して、それは動作します。しかし、文字を制限する意図があるはずです。 – Lakshmikantha