oracle sqr工作學習小記
自調至批次組,工作內容涉及批次報表的展示.而公司展示報表的工具採用的是
oracle sqr,學習SQR成為工作之需.
因近期諸事牽扯精力.雖說從1個月前有所瞭解SQR.僅止於偶爾走馬燈看過幾頁SQR手冊.任何實際工作沒有進行過.這幾日就把SQR手冊及SQR實際程式碼參考著學習.基本實現了工作的需要.當然在其過程中同事.給了我莫大的幫助.免去眾多
無謂的變路與歧途.節省了時間.謝謝你們.
SQR和ORACLE PLSQL差不多.如果你有前期豐富的程式設計經驗.富有嚴密的邏輯
思維能力.相信學習一途風光.平坦順心.
少說多作.先放一些SQR程式碼.
上述程式碼.主體部分由我完成.細節格式同事協助除錯完成.我感覺SQR的格式除錯頗費精力.昨天晚上一個小問題我就花費了一個多小時.才搞定.原來是過程之間的變數不一致導致.
SQR也會把某些公有的功能預先編寫在一些庫檔案中,這樣以後在編寫自己的SQR指令碼時,就可以直接呼叫這些庫檔案中的方法(或叫過程),非常方便.類似於JAVA的公有類或者ORACLE PLSQL的 PACKAGE 的變數型別.
sqr是原始的原始碼檔案(其實就是txt檔案,不過它的副檔名是.sqr),由ORACLE自己的編譯工具sqr.exe編譯後.會產生同名但副檔名為.sqt的檔案.此時直接用執行工具sqrt.exe執行sqt檔案.就會產生指定的字尾名為.LIS報表檔案
上述SQR執行產生的報表檔案如下:
oracle sqr,學習SQR成為工作之需.
因近期諸事牽扯精力.雖說從1個月前有所瞭解SQR.僅止於偶爾走馬燈看過幾頁SQR手冊.任何實際工作沒有進行過.這幾日就把SQR手冊及SQR實際程式碼參考著學習.基本實現了工作的需要.當然在其過程中同事.給了我莫大的幫助.免去眾多
無謂的變路與歧途.節省了時間.謝謝你們.
SQR和ORACLE PLSQL差不多.如果你有前期豐富的程式設計經驗.富有嚴密的邏輯
思維能力.相信學習一途風光.平坦順心.
少說多作.先放一些SQR程式碼.
#define addtlsetup #include 'Rptstub.lib' #include '{libpath}tkit_batchstartup.inc' #include '{libpath}tkit_rptheader.inc' #include '{libpath}tkit_queappl.inc' #include '{libpath}tkit_vars_opts.inc' #include '{libpath}tkit_Sqrfunc.inc' !---------------------------------------------------------------------------------------------------------- !開發日期:2011-12-12 !開發人員:翟勳楊 !功能描述:二期【久懸戶轉營業外收入清單,呼叫儲存過程和產生報表 !久懸戶轉營業外收入清單SQT:RDP_DORMTOOUTINCOME.SQT ! !修改日期: !修改人員: !---------------------------------------------------------------------------------------------------------- !報表顯示佈局的初始化 begin-setup Declare-layout batch-land rientation=landscape left-margin=0 top-margin=0 max-lines=60 max-columns=180 end-declare end-setup Begin-Heading 5 name = myHeading print $filename (2,35) BOLD center Let $Global-HaveIWrittenAPage = 'Y' print '─' (+1,2,84) fill Print '提交日期:' (+1,118) Print &FmtdEffDate (0, 0) print '─' (+1,2,84) fill End-Heading !報表表頭的初始化 begin-procedure outsideheading print $filename (0) center print '─' (+1,2,84) fill position (+1) let $bankorg_name = '機構名稱:'|| $bankorgname print $bankorg_name (,2) Print '提交日期:' (,118) Print &FmtdEffDate (0, 0) print '─' (+1,2,84) fill !介質號,賬號,戶名,產品大類,產品小類,狀態 轉營業外輸入日期 ,金額 position (+1) print '介質號' (,2,19) print '賬號' (,23,20) print '戶名' (,45) print '產品大類' (,90,10) print '產品小類' (,100,10) print '狀態' (,120,8) print '轉營業外收入日期' (,130,10) print '金額' (,142,30) print '─' (+1,2,84) fill end-procedure begin-procedure osi-main Move 'In OSI-Main' To $Global-ProcName !---------------- 獲取定義報表輸出路徑需要的資料---開始--------------------- do Get-The-PostDate($dt) move $dt to $dt 'YYYYMMDD' do GET-APPL-NAME($filename) Do Get-Bank-Option('RPTT',$Len) !---------------- 獲取定義報表輸出路徑需要的資料---結束--------------------- do selectdiffbankorg Let $QueApplChkpt = 'Report Complete' Let $QueApplRc = 0 Do Final-QueAppl-Update move 'Done OSI-Main' To $Global-ProcName end-procedure begin-procedure selectdiffbankorg begin-select count(*) &rownums !from osibank.acctinactprocess from osibank.rpt_acctinact_process end-select if &rownums = 0 alter-report heading = myHeading !改變頁首 let $out = $Len || $dt || '\' || $QueNbr || '\' || $filename || '.LIS' NEW-REPORT $out print '沒有符合條件的資料' (+1,) center else !以銀行分支機構分組 begin-select distinct p.branchorgnbr &a () ON-BREAK PRINT=NEVER AFTER=NP($a) save = $a from OSIBANK.acctinactprocess p where p.state='TINC' end-select end-if end-procedure !檔案輸出路徑、檔名設定 BEGIN-procedure NP($a) do GETBANKNAME($a) do selectdifforg($a) !只列印不同銀行分支機構的報表資訊 let $out=$_Len||$_dt||'\'||$a||'_'||$_filename|| '.LIS' use-procedure before-page = outsideheading NEW-REPORT $out end-procedure BEGIN-PROCEDURE GETBANKNAME($A) begin-select o.orgname &bankorgname move &bankorgname to $_bankorgname FROM ORG o,branch b WHERE o.ORGNBR = b.orgnbr and b.orgidnbr=$A end-select END-PROCEDURE begin-procedure selectdifforg($a) begin-select position (+1) p.mediumid &mediumid move &mediumid to $mediumid print $mediumid (,2,19) to_char(p.acctnbr) &acctnbr move &acctnbr to $acctnbr print $acctnbr (,23,20) p.orgname &orgname move &orgname to $orgname print $orgname (,45) p.mjaccttypcd &mjaccttypcd move &mjaccttypcd to $mjaccttypcd print $mjaccttypcd (,90,10) p.mjmiaccttypcd &mjmiaccttypcd move &mjmiaccttypcd to $mjmiaccttypcd print $mjmiaccttypcd (,100,10) p.state &state move &state to $state print $state (,120,8) p.totindate &totindate move &totindate to $totindate 'YYYY-MM-DD' print $totindate (,130,10) p.accttotalamt &accttotalamt move &accttotalamt to $accttotalamt 88,888,888,888,888.88 print $accttotalamt (,142,30) let #count=#count+1 let #accttotalamt=#accttotalamt + &accttotalamt !from osibank.acctinactprocess p from osibank.rpt_acctinact_process p where p.state='TINC' and p.branchorgnbr=$a end-select print '─' (+1,2,84) fill move #count to $count 999,999,999 let $co ='總記錄數:' || $count print $co (+1,2) move 0 to #count move #accttotalamt to $accttotalamt 999,999,999,999.99 let $totalamt ='總金額:' || $accttotalamt print $totalamt (,100) end-procedure begin-footing 3 print '─' (,2,84) fill !page-number () (+1,126) '當前頁為第' '頁,' page-number (+1,126) '當前頁為第' '頁,' last-page () '共' '頁。' print '列印時間:' (,+1) let $printDate = datenow() move $printDate to $printDate 'YYYY-MM-DD' print $printDate (,) end-footing begin-procedure OSI-Startup End-procedure |
上述程式碼.主體部分由我完成.細節格式同事協助除錯完成.我感覺SQR的格式除錯頗費精力.昨天晚上一個小問題我就花費了一個多小時.才搞定.原來是過程之間的變數不一致導致.
SQR也會把某些公有的功能預先編寫在一些庫檔案中,這樣以後在編寫自己的SQR指令碼時,就可以直接呼叫這些庫檔案中的方法(或叫過程),非常方便.類似於JAVA的公有類或者ORACLE PLSQL的 PACKAGE 的變數型別.
sqr是原始的原始碼檔案(其實就是txt檔案,不過它的副檔名是.sqr),由ORACLE自己的編譯工具sqr.exe編譯後.會產生同名但副檔名為.sqt的檔案.此時直接用執行工具sqrt.exe執行sqt檔案.就會產生指定的字尾名為.LIS報表檔案
上述SQR執行產生的報表檔案如下:
久懸戶轉營業外收入 ──────────────────────────────────────────────────────────────────────────────────── 機構名稱:達州市商業銀行文華街支行 提交日期:2014-08-31 ──────────────────────────────────────────────────────────────────────────────────── 介質號 賬號 戶名 產品大類 產品小類 狀態 轉營業外收 金額 ──────────────────────────────────────────────────────────────────────────────────── **00586 **00586 不動戶 CK 2010 TINC 2013-08-21 1,411.20 *a3*00425 *a3*00425 sb飾c程 CK 2010 TINC 2014-08-28 10.94 201*a3*0041500616 201*a3*0041500616 ab CK 2000 TINC 2014-08-28 3.24 *a3*004aaa1c06c7 *a3*004aaa1c06c7 xd CK 2010 TINC 2014-08-28 667.36 632xa16dcs50c41 632xa16dcs50c41 abc CK 2010 TINC 2014-08-28 148.57 ──────────────────────────────────────────────────────────────────────────────────── 總記錄數: 5 總金額: 621,640.91 ──────────────────────────────────────────────────────────────────────────────────── 當前頁為第1頁,共1頁 列印時間:2011-12-16 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-713450/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- tcbs sqr之轉睡眠戶_sqr示例學習筆記_報表report筆記
- oracle sqr編寫除錯手記Oracle除錯
- sqr學習筆記_20110922筆記
- oracle sqr編寫技巧Oracle
- java學習小記Java
- MQ學習小記MQ
- Dubbo學習小記
- oracle sqr介質下載Oracle
- oracle10g_儲存過程學習小記Oracle儲存過程
- 正則學習小記
- Python學習小記Python
- Ruby/Elixir學習小記
- 042學習小記(1)
- 042學習小記(2)
- oracle學習筆記Oracle筆記
- oracle 學習筆記 (ORACLE NET )Oracle筆記
- 小墨學習記--微服務微服務
- 微信小程式學習筆記微信小程式筆記
- react小書學習筆記React筆記
- 學習es6小記
- Spring 學習小記(九)Spring
- Activiti 學習筆記 小結筆記
- oracle學習筆記《一》Oracle筆記
- Oracle學習筆記2Oracle筆記
- Oracle學習筆記1Oracle筆記
- ORACLE dataguard學習筆記Oracle筆記
- Oracle FlashBack 學習筆記Oracle筆記
- 標記下oracle學習Oracle
- ORACLE學習筆記(zt)Oracle筆記
- Oracle學習筆記-1Oracle筆記
- Oracle DBA學習日記筆記Oracle筆記
- ES模組語法學習小記
- 彙編學習小記(三)-查表
- SIFT演算法學習小記演算法
- 小魚JCL學習筆記(一)筆記
- 提升小波的學習筆記筆記
- go 學習筆記之工作空間Go筆記
- SQL Server工作平臺學習筆記SQLServer筆記