1.數據庫取出一個 Count函數 統計的值
報異常:java.math.BigDecimalcannot be cast to java.lang.String
解決方案:將Count函數統計的值轉換類型to_char(count()得到的數值)
2.執行update卡住不動,但可以執行其他select語句
現象:開發時到一條update時不繼續執行,在plsql中也是顯示正在執行,而且一直沒有執行結果,但是可以執行其他的select語句。
原因:只有update無法執行,其他語句可以執行,是因爲記錄鎖導致的。在Oracle中,執行update或insert語句後都會要求commit。若不commit卻強制關閉連接,Oracle就會將這條提交的記錄鎖住。可能是英文java程序中加了事務,debug時執行一半就強制把工程終止了,所以導致的沒有執行事務提交,所以Oracle將代碼中的update的那一條記錄鎖住了。
解決方案:兩個步驟
1)首先查詢鎖定記錄
select s.sid, s.serial#
from v$locked_object lo, dba_objects ao, v$session s
where ao.object_id = lo.object_id
and lo.session_id = s.sid;
2)刪除
ALTER system KILL session 'SID,serial#';
如:ALTER system kill session '825, 35';
3.無法刪除用戶
現象:無法刪除用戶
解決方法:
1)查看用戶的連接
select username,sid,serial# from v$session where username='EQU_FRAMEWORK';
2)找到要刪除用戶的sid,和serial,並kill掉
alter system kill session'23,470' ;
3)查看一下是否被刪除,如果狀態爲killed,則被kill掉
select saddr,sid,serial#,paddr,username,status from v$session where username = 'EQU_FRAMEWORK' ;
4)刪除用戶
4.case用在where條件中
where case when '10000088' in ('10000083','10000087','10000088') and n.fdepartmentid = '10000088' then 1 when '10000088' not in ('10000083', '10000087', '10000088')
then 1 else 0 end =1and to_char(n.fmakedate,'yyyy-mm-dd') between '2016-08-04' and '2016-08-04'