就是在Orcael表中,怎么将Clob格式的字段转成varchar2类型的!(Clob字符超过4000)
百度的方法:
CREATE OR REPLACE Function Blob_To_Clob (Blob_In In Blob) Return Clob
Is
V_Clob Clob;
V_Varchar Varchar2(4000);
V_Start Pls_Integer := 1;
V_Buffer Pls_Integer := 4000;
G_Nls_Db_Char Varchar2(60);
Begin
Select Userenv('LANGUAGE') Into G_Nls_Db_Char From Dual;
If Dbms_Lob.Getlength(Blob_In) Is Null Then
Return Empty_Clob();
End If;
Dbms_Output.Put_Line('TEST:' || Ceil(Dbms_Lob.Getlength(Blob_In)));
Dbms_Lob.Createtemporary(V_Clob, True);
For I In 1..Ceil(Dbms_Lob.Getlength(Blob_In) / V_Buffer) Loop
V_Varchar := Utl_Raw.Cast_To_Varchar2(Utl_Raw.Convert(Dbms_Lob.Substr(Blob_In, V_Buffer, V_Start),'SIMPLIFIED CHINESE_CHINA.ZHS16GBK', 'AMERICAN_THE NETHERLANDS.UTF8'));
Dbms_Lob.Writeappend(V_Clob, Length(V_Varchar), V_Varchar);
V_Start := V_Start + V_Buffer;
End Loop;
--Dbms_Output.Put_Line(V_Varchar);
Return V_Clob;
End Blob_To_Clob;
在转换的时候:不懂怎么写:
(1)首先想在表里面添加一个新字段
ALTER TABLE a_test ADD INTRODUCE_TEMP VARCHAR2(4000);
(2)想把Clob格式的转成Varchar2:
update a_test set INTRODUCE_TEMP=to_char(BlOB_TO_CLOB(select to_char(t_contetn) from a_test where t_name='1'))
会报出一个缺失表达式的错误!
不懂怎么转换,求大神赐教!
百度的方法:
CREATE OR REPLACE Function Blob_To_Clob (Blob_In In Blob) Return Clob
Is
V_Clob Clob;
V_Varchar Varchar2(4000);
V_Start Pls_Integer := 1;
V_Buffer Pls_Integer := 4000;
G_Nls_Db_Char Varchar2(60);
Begin
Select Userenv('LANGUAGE') Into G_Nls_Db_Char From Dual;
If Dbms_Lob.Getlength(Blob_In) Is Null Then
Return Empty_Clob();
End If;
Dbms_Output.Put_Line('TEST:' || Ceil(Dbms_Lob.Getlength(Blob_In)));
Dbms_Lob.Createtemporary(V_Clob, True);
For I In 1..Ceil(Dbms_Lob.Getlength(Blob_In) / V_Buffer) Loop
V_Varchar := Utl_Raw.Cast_To_Varchar2(Utl_Raw.Convert(Dbms_Lob.Substr(Blob_In, V_Buffer, V_Start),'SIMPLIFIED CHINESE_CHINA.ZHS16GBK', 'AMERICAN_THE NETHERLANDS.UTF8'));
Dbms_Lob.Writeappend(V_Clob, Length(V_Varchar), V_Varchar);
V_Start := V_Start + V_Buffer;
End Loop;
--Dbms_Output.Put_Line(V_Varchar);
Return V_Clob;
End Blob_To_Clob;
在转换的时候:不懂怎么写:
(1)首先想在表里面添加一个新字段
ALTER TABLE a_test ADD INTRODUCE_TEMP VARCHAR2(4000);
(2)想把Clob格式的转成Varchar2:
update a_test set INTRODUCE_TEMP=to_char(BlOB_TO_CLOB(select to_char(t_contetn) from a_test where t_name='1'))
会报出一个缺失表达式的错误!
不懂怎么转换,求大神赐教!