oracle存储过程 学习笔记
生活随笔
收集整理的這篇文章主要介紹了
oracle存储过程 学习笔记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
連接字符:||
賦值運算:":="
如: l_name :='sky';
判斷是否相等:"="
如: if 1=1 then...
變量綁定:":"
如: if :P_NAME ='sky' then...exists是否存在
not exists是否不存在%type 匹配字段類型
%rowtype 匹配記錄類型
%type當表類型改變的時候,不需要手動修改PL/SQL塊中調用的該類型
例如:V_GP_ID SC_BALANCE_DAILY.Gp_Id%TYPE;sqlcode sql語句
sqlerrm sql錯誤
no_data_found 當select into沒有記錄時出現(DML不觸發NO_DATA_FOUND異常)commit 提交 (insert、update、delete中使用)
比如你用test賬戶登錄數據庫insert到表中一條記錄,而不commit,
那么別的賬戶在登錄這個數據庫時就查詢不到你insert 的記錄;而commit后則其他賬戶就能查詢到你insert的記錄了。
rollback 回滾 (insert、update、delete中使用)
比如你用test賬戶登錄數據庫delete表中一條記錄,這時你查詢這個表時,
則delete的記錄不存在;再rollback后,你再查詢你delete的記錄時,發現被刪除的記錄又回來了。execute immediate 一般用于 執行動態 SQL
簡單來說 就是你一個存儲過程當中 創建了一個表 table_a 然后要用insert into將其他的數據插入到這個table_a當中,
但是因為你在創建過程的時候 table_a還不存在,過程就會顯示有編譯錯誤,因為table_a不存在必然導致過程無法執行,
所以無法編譯成功,而把insert into語句加如到 execute immediate之后 則oracle不會再去理會這個對象是否存在,因此可以成功編譯和執行。nvl()
nvl(字段名,0),就是當你選出來的時候,這個字段雖然為空,但是顯示的是0
例如:nvl(sum(rge_amt_sum),0) SJCZ_AMT, 當sum(rge_amt_sum)為空時,SJCZ_AMT的值為0decode()
decode(列名,判斷條件,符合判斷條件的輸出結果,不符合判斷條件的輸出結果)
例如:decode(business_type,'COD_PAY',amt,-amt) cod_def_amtsysdate返回當前時間yyyy-mm-dd hh24-mi-ss
例:select sysdate from dual; --2013-6-7 10:36:30
sysdate+1得到的是后一天,如2013-6-8 10:36:30
trunc()返回當前日期yyyy-mm-dd
例:select trunc(sysdate) from dual; --trunc(sysdate) 2013-6-7
TIMESTAMP帶毫秒格式的日期--當月第一天
select trunc(sysdate,'mm') from dual;
--當月最后一天
select last_day(trunc(sysdate,'mm')) from dual;
?
轉載于:https://www.cnblogs.com/load/archive/2013/06/09/3128032.html
總結
以上是生活随笔為你收集整理的oracle存储过程 学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。