日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Oracle的PL/SQL编程前奏之基础技能实战一(匿名子程序)

發布時間:2025/7/25 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle的PL/SQL编程前奏之基础技能实战一(匿名子程序) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Oracle的PL/SQL編程之基礎技能實戰一???? 一>基礎代碼檢查檢查以bm_開頭的系統初始化編碼表是否有空值。與業務系統相關的編碼項不能存在空值,會導致系統業務無法辦理。為初始化數據表、在做測試數據和正式上線前檢查。上線運行后、仍存在空值表、需要進行核實、可能存在不經常辦理的業務。也可能是冗余表。 PL/SQL代碼塊: declare v_table_name?????varchar(40); v_sql_str????????varchar(4000):='?'; v_cnt????????????smallint:=0?; v_jgbm???????????varchar(10):='01%'; cursor?tmp_cur?is?select?table_name??from?user_tables where?table_name?like?'BM_%'?; begin open?tmp_cur?; loopfetch??tmp_cur?into?v_table_name?;exit?when?tmp_cur%notfound;select?count(*)?into?v_cnt?from?user_tab_columnswhere?table_name=v_table_name?and?column_name='JGBM';if?v_cnt<>0?thenv_sql_str:='select?count(*)?from?'||v_table_name||'?where?jgbm='''||v_jgbm||'''';elsev_sql_str:='select?count(*)?from?'||v_table_name;end?if;execute?immediate?v_sql_str?into?v_cnt;if?v_cnt=0?theninsert?into?tmp_hfsc_sy40_chk(ywms)?values(v_table_name||'表記錄為空');end?if;commit; end?loop; close?tmp_cur; end;二>財務業務核對 業務關于資金的結算都是自動生成憑證,財務和業務應是保持一致的。如存在特殊業務可能會有不平衡的情況。如果有人調整數據也會造成不平。主要檢查?歸集余額、單位未分配金額、貸款余額、逾期貸款、業務流水金額和財務憑證金額是否相等。直接影響到系統的報表業務和財務的一致性。 PL/SQL代碼塊: declare?v_fpzd?smallint;v_ztbh?number(20);v_cwnd?smallint;v_kmye?number(18,2);v_gjye?number(18,2);v_jgbm?varchar(10):='01%';v_msg??varchar(100);v_ret??smallint:=0; beginselect?nvl(max(value1),0)?into?v_fpzd?from?bm_xtcs?where?bm1=v_jgbm?and?bm2='0301'?and?bm3='03010903'?and?bm='04'?and?sfqy=1;for?a?in(select?id?from?cw_ztml?where?ztxz='01'?and?jgbm=v_jgbm)?loopselect?max(nd)?into?v_cwnd?from?cw_nd?where?ztbh=a.id;select?nvl(sum(nce+ljdf-ljjf),0)?into?v_kmye?from?cw_kmbh?where?kmbh='201'?and?ztbh=a.id?and?nd=v_cwnd;select?v_kmye+nvl(sum(fl.dffse-fl.jffse),0)?into?v_kmye?from?cw_pz_fl?fl?inner?join?cw_pz_ml?b?on?fl.pzid=b.pzid?where?kmbh?like?'201%'?and?b.ztbh=a.id?and?b.nd=v_cwnd?and?b.zfbz=0;if?v_fpzd<>0?thenselect?nvl(sum(dwzhye),0)?into?v_gjye?from?gjzf_dw_zz?where?jgbm=v_jgbm;elseselect?nvl(sum(zckye+dwzhye),0)?into?v_gjye?from?gjzf_dw_zz?where?jgbm=v_jgbm;end?if;if?v_kmye<>v_gjye?theninsert?into?tmp_hfsc_sy40_chk(ywms)?values(to_char(a.id)||'賬套'||'201科目余額與業務歸集余額不一致');end?if;commit;end?loop; end;三>跟新im_zhsz_dw中的yhmc使得同一銀行賬號和grdk_xm_zhlr中的skyhmc相等. declarev_yhmc???varchar2(40)?:=?'?';v_skyhzh?varchar2(50)?:=?'?';v_count??number(20):=0;cursor?tmp_cur?isselect?distinct?a.yhmc,b.skyhmc,?b.skyhzhfrom?im_zhsz_dw?ainner?join?grdk_xm_zhlr?bon?a.yhzhhm?=?b.skyhzhand?a.yhmc=b.skyhmc; beginopen?tmp_cur;loopfetch?tmp_curinto?v_yhmc,?v_skyhzh;exit?when?tmp_cur%notfound;update?im_zhsz_dw?aset?a.yhmc?=?v_yhmcwhere?a.yhzhhm?=?v_skyhzhand?a.yhmc?<>?v_yhmc;v_count:=v_count+1;end?loop;close?tmp_cur;dbms_output.put_line('一共更新了'||v_count||'行'); end;

總結:PL/SQL編程解決問題的一般步驟:

? ? ? 1>創建存儲空間表,要定義哪些字段以及類型以及約束;

? ? ? 2>如果這些表里面沒有數據,要向這些表里面準備數據;

???? ?3>理清業務邏輯,操作這些表里面的數據邏輯;

? ? ? 4>獲得結果數據;






轉載于:https://blog.51cto.com/11218855/2353943

總結

以上是生活随笔為你收集整理的Oracle的PL/SQL编程前奏之基础技能实战一(匿名子程序)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。