于項目中碰到由數(shù)據(jù)庫管理員開的視圖用于報表制作,但是視圖在插詢中出現(xiàn)了數(shù)據(jù)庫字段的字段無效報錯,報錯如下
渐苏,經(jīng)排查奴愉,該視圖可能是由某些軟件生成,而不是管理員使用sql收到生成的泌豆,用sqldevelop打開該視圖的結(jié)構(gòu),查看其sql,得到以下代碼
CREATE OR REPLACE FORCE VIEW "MRDCTEST"."V_METRO01" ("employee_workno", "old_workno", "employeename", "companyId", "company_name", "departmentId", "depertment_name", "status") AS
select? t.employee_workno as "employee_workno",
t.old_workno as "old_workno",
t.employeename as "employeename",
t.company_id? ? as "companyId",
t.company_name as "company_name",
t.depertment_id as "departmentId",
t.depertment_name as "depertment_name",
( case when t.curr_type in('退休','解聘','辭退','離退員工','解聘員工','開除','在職死亡','辭職','離休','身故')
then 'InActive'
else 'Active'
end) as "status"
from pf.t_user t;
由上可以看出劫流,所有的字段都是由雙引號""包裹,所以查詢時候我們的字段同樣需要添加""丛忆,即如下
祠汇。同時在我們的java代碼中,如果需要查詢該語句熄诡,面對雙引號可很。我們需要使用轉(zhuǎn)義符號\來進行編譯,即如下形式:
sql1="select * from V_METRO01 where \"status\" ='Active'";
至此凰浮,關(guān)于視圖查詢的異常告一段落我抠。