標籤:函數 資訊 出錯 logs 變數 否則 image 參數 strong
中醫科查詢出院病人資訊報下面的錯誤
然後看到該介面的sql為
然後在plsql裡面運行該代碼,
報錯
處理方法:
1.確定報錯的位置
現在確定出錯的位置就是登出掉的那兩行代碼,
然後
然後這就是報錯的原因,
是因為他的入院診斷有兩條
我想判斷一下,如果是中醫病區就取中醫的診斷否則取西醫的
但是寧哥給了一個更好的解決問題的方法
用NVL函數
在介紹這個之前你必須明白什麼是oracle中的空值null
1.NVL函數
NVL函數的格式如下:NVL(expr1,expr2)
含義是:如果oracle第一個參數為空白那麼顯示第二個參數的值,如果第一個參數的值不為空白,則顯示第一個參數本來的值。
2 NVL2函數
NVL2函數的格式如下:NVL2(expr1,expr2, expr3)
含義是:如果該函數的第一個參數為空白那麼顯示第二個參數的值,如果第一個參數的值不為空白,則顯示第三個參數的值
3. NULLIF函數
NULLIF(exp1,expr2)函數的作用是如果exp1和exp2相等則返回空(NULL),否則返回第一個值。
4.Coalesce函數
Coalese函數的作用是的NVL的函數有點相似,其優勢是有更多的選項。
格式如下:
Coalesce(expr1, expr2, expr3….. exprn)
表示可以指定多個運算式的預留位置。所有運算式必須是相同類型,或者可以隱性轉換為相同的類型。
返回運算式中第一個非空運算式,如有以下語句: SELECT COALESCE(NULL,NULL,3,4,5) FROM dual 其返回結果為:3
如果所有自變數均為 NULL,則 COALESCE 返回 NULL 值。 COALESCE(expression1,...n) 與此 CASE 函數等價:
------------------------------------------------
所以寧哥把sql改為了
nvl((select jbmc from ys_zy_jbzd where zdlb = ‘入院診斷‘ and jbzh = 1 and znxh = 1 and zfbz = 0 and zxlb = 1 and tjbz = 1 and jzhm = zy_brry.zyh),(select jbmc from ys_zy_jbzd where zdlb = ‘入院診斷‘ and jbzh = 1 and znxh = 1 and zfbz = 0 and zxlb = 2 and tjbz = 1 and jzhm = zy_brry.zyh)) ryzd,
nvl((select jbmc from ys_zy_jbzd where zdlb = ‘出院診斷‘ and jbzh = 1 and znxh = 1 and zfbz = 0 and zxlb = 1 and tjbz = 1 and jzhm = zy_brry.zyh),(select jbmc from ys_zy_jbzd where zdlb = ‘出院診斷‘ and jbzh = 1 and znxh = 1 and zfbz = 0 and zxlb = 2 and tjbz = 1 and jzhm = zy_brry.zyh)) cyzd
----------------------------------------------------------------------------
關於Oracle中的nvl()函數的使用,中醫科查詢出院病人資訊報錯