谈谈你对oracle的认识,对Oracle存储过程的几点认识
1、寫Oracle存儲過程時最好不要在其中寫Commit語句。一般調用程序會自動Commit數據,比如用NHibernate調用的時候,NHibernate就會自動Commi
1、寫Oracle存儲過程時最好不要在其中寫Commit語句。
一般調用程序會自動Commit數據,,比如用NHibernate調用的時候,NHibernate就會自動Commit數據。如果寫了,會造成NHibernate調用完存儲過程之后拋出錯誤。
2、重視Count的特殊比較作用。
在一個Select語句中,用Count對不同的字段進行統計,如果某行數據中被統計字段值為null,不會計入該字段統計值。利用這一點可以進行多表關聯統計,比較數據的一致性。
例如:
Select Count(dmc.id) dmcCnt, Count(dmp.id) dmpCnt,
Count(Case dmp.type When 1 Then 1 Else null End) dmp2, Count(dmt.id) dmtCnt
Into i_Count1, i_Count2, i_Count3, i_Count4
From dmc
left join dmp on dmp.id = dmc.dmpid
and dmp.procdoctimestamp = dmc.procdoctimestamp
left join dmt on dmt.dmpid = dmp.id
3、通過關聯數據更新一個表時,要注意關聯數據的唯一性。
例如:
update (
select dmu.cu, dmu.lmt,
dmcl.cu cu1, dmcl.lmt lmt1
from dmu, dmcl, dmp
where dmu.id = dmp.dmuid
and dmcl.dmpid = dmproc.id
and dmcl.id = dmu.dmclid
)
Set cu = cu1,
lmt = lmt1;
此語句中的dmu表中必須要有dmcl表的主關鍵字段才可以唯一確定cu1和lmt1的值,否則Oracle會認為你使用多條數據更新一條數據,那樣是不允許的。有一些朋友使用一個表的數據更新另一個表的數據失敗(ora-01779)常常是這個原因。
本條技術文章來源于互聯網,如果無意侵犯您的權益請點擊此處反饋版權投訴
本文系統來源:php中文網
總結
以上是生活随笔為你收集整理的谈谈你对oracle的认识,对Oracle存储过程的几点认识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle分页查询加总数,oracle
- 下一篇: 符合c语言常量12abc,《C语言》试题