函数声明:nvl(col,val)
说明:当col为空时取val作为返回值,当col不为空时取col值。
用处:最主要的是格式化数据,比如计算金额时,不想出现空数据,可以使用nvl(JINE,0)来得到0。由于null+(或-,*,/)数字等于null,所以在表达式中对可能为空的值要使用nvl由于null!=null,有时对可能为空的列进行条件查询时,可能出现结果集丢失数据问题,加上nvl就不会了。
一般写视图的时候的为数字的项为null或没有默认值可能会引起hibernate抛异常,这是需要把null附一个值,用此函数
create or replace view tb_v_pmg_appraisereport as
SELECT
T.C_OBJECTID C_EMPOID,
emp.c_code C_EMPCODE,
emp.c_name C_EMPNAME,
org.c_oid_orgunit C_UNITID,
org.c_name C_UNITNAME,
T.C_OID_OBJECT C_OID,
PC.C_NAME C_PRECEPTNAME,
PC.C_OID_PRECEPT C_PRECEPTID,
PH.C_OID_PHASE C_PHASEID,
PH.C_NAME C_PHASENAME,
PH.C_BEGINDATE C_PHBEGINDATE,
PH.C_ENDDATE C_PHENDDATE,
T.C_COMPETITION C_COMPETITION,
nvl(D.C_OID_DISTRIBUTERATEITEM,-1) C_DISTRIBUTEID,
D.C_NAME C_DISTRIBUTENAME,
T.C_EVALUATESCORE C_EVALUATESCORE,
T.C_APPROVESCORE C_APPROVESCORE,
T.C_PERFORMANCESCORE C_PERFORMANCESCORE,
T.C_SCOREDESC C_SCOREDESC,
T.c_Appraisereportid C_UPLOADID,
T.C_OPERATOR C_OPERATOR,
T.C_OPERATETIME C_OPERATETIME
FROM TB_PMG_OBJECT T
LEFT JOIN TB_PMG_DISTRIBUTERATEITEM D ON D.C_OID_DISTRIBUTERATEITEM =
T.C_DISTRIBUTEID,
TB_PMG_PRECEPT PC, TB_PMG_PHASE PH,
tb_inf_employee emp, tb_org_orgunit org
WHERE PC.C_OID_PRECEPT = T.C_PRECEPTID
AND PH.C_OID_PHASE = T.C_PHASE
AND PC.C_TYPE = '1'
AND t.c_objectid = emp.c_employeeid
AND org.c_oid_orgunit = emp.c_unitid
ORDER BY T.C_OBJECTID, PC.C_OID_PRECEPT, PH.C_BEGINDATE
分享到:
2012-08-02 11:10
浏览 2680
分类:数据库
评论
1 楼
潇洒天涯
2013-04-19
[color=blue][color=cyan]
[/color][/color]
[color=cyan]去委屈委屈v[/col[b][b][/b][/b]or]