在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