oracle創建視圖包含clob字段,報錯:數據類型不一致:應為-,但卻獲得CLOB


在oracle中創建視圖的時候,語句中包含有clob類型的字段。視圖創建語句大概如下:

CREATE OR REPLACE FORCE VIEW "T_PROJECTS" ("ID", "NAME","DSC_INFO") AS
(
select a.id,a.name,'' DSC_INFO from t_project_a a
union
select b.id,b.name,b.dsc_info from t_project_b b
union
select c.id,c.name,c.dsc_info from t_project_c c
);
但在執行的時候卻報錯了,錯誤為:
數據類型不一致:應為-,但卻獲得CLOB
檢查以后發現,dsc_info字段為clob類型,起初以為是clob類型初始化的問題,於是把語句改為
CREATE OR REPLACE FORCE VIEW "T_PROJECTS" ("ID", "NAME","DSC_INFO") AS
(
select a.id,a.name,empty_clob() DSC_INFO from t_project_a a
union
select b.id,b.name,b.dsc_info from t_project_b b
union
select c.id,c.name,c.dsc_info from t_project_c c
);
執行仍然報錯。然后查資料:oracle中clob實際上是使用char來存儲數據的,所以在對clob字段進行查詢時為了保證正確應該對字段進行轉換,轉換成char,並給字段增加別名。轉換成char的函數為:to_char(clob字段名)。最后,sql改為:
CREATE OR REPLACE FORCE VIEW "T_PROJECTS" ("ID", "NAME","DSC_INFO") AS
(
select a.id,a.name,'' DSC_INFO from t_project_a a
union
select b.id,b.name,to_char(b.dsc_info) DSC_INFO from t_project_b b
union
select c.id,c.name,to_char(c.dsc_info) DSC_INFO from t_project_c c
);
執行成功,以作記錄。

————————————————
版權聲明:本文為CSDN博主「southArbor」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u010295735/article/details/79215441


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM