我的儲存過程學習2

2021-04-17 03:22:22 字數 2522 閱讀 1084

業務系統需要乙個關於合同狀態的報表,主要顯示合同的狀態,地區,合同客戶型別,合同金額,利息金額等資訊.

在中存在4個表

crec01c,sysc01,sysc03d,crmc02分別是'合同主表','區域及業務夥伴','系統狀態**','法人資訊表'

下面第乙個儲存過程是我第一次寫的,執行時間是5秒

------------------效率較差的儲存過程---------------------------

createtable#tmptba--建立乙個臨時表,用於儲存我們的結果

(colidintidentity(1,1)primarykeyclustered,

khlxvarchar(20),

dqvarchar(20),

ywhbvarchar(40),

htztvarchar(20),

htbsint,

htjenumeric(13,2),

lxjenumeric(13,2)

)declare @bkhlxchar(1),@ikhidint,@cywdbdchar(10),@chtztchar(1),@njkjenumeric(13,2),@iqxint,@nhtyllnumeric(8,6)--forprogress

declare@t_khlxvarchar(20),@t_dqvarchar(20),@t_ywhbvarchar(40),@t_htztvarchar(20),@t_htbsint,@t_htjenumeric(13,2),@t_lxjenumeric(13,2)--forinsertinto#tmptba

--declare@indexint

--set@index=1

declarecur1cursorforselectbkhlx,ikhid,cywdbd,chtzt,njkje,iqx,nhtyllfromcrec01c

opencur1

fetchnextfromcur1into@bkhlx,@ikhid,@cywdbd,@chtzt,@njkje,@iqx,@nhtyll

while@@fetch_status=0

begin

if@bkhlx='1'

begin

set@t_khlx='自然人'

set@t_dq =(selectvjgmcfromsysc01wherecjgdm=left(@cywdbd,6))

endelse

begin

set@t_khlx='法人'

set@t_dq=(selectvjgmcfromsysc01wherecjgdm=(selectcbmdmfromcrmc02wherefrid=@ikhid))

endset@t_htbs=1--@index--合同筆數

set@t_ywhb=(selectvjgmcfromsysc01wherecjgdm=@cywdbd)--業務夥伴

set@t_htzt=(selectvsjxcfromsysc03dwhereczddm='htzt'andcsjxm=@chtzt)--合同狀態

set@t_htje=@njkje

set@t_lxje=@njkje*@iqx*@nhtyll*0.001

insertinto#tmptba(khlx,dq,ywhb,htzt,htbs,htje,lxje)values(@t_khlx,@t_dq,@t_ywhb,@t_htzt,@t_htbs,@t_htje,@t_lxje)

--set@index 1

fetchnextfromcur1into@bkhlx,@ikhid,@cywdbd,@chtzt,@njkje,@iqx,@nhtyll

endclosecur1

deallocatecur1

select*from#tmptba

go------------------效率較高的儲存過程執行時間是1秒---------------------------

createtable#tmptbl--建立乙個臨時表,用於儲存我們的結果

(colidintidentity(1,1)primarykeyclustered,

khlxvarchar(20),

dqvarchar(20),

ywhbvarchar(40),

htztvarchar(20),

htbsint,

htjenumeric(13,2),

lxjenumeric(13,2)

)insertinto#tmptblselectcasewhena.bkhlx='1'then'自然人'else'法人'endaskhlx,dq=(selectvjgmcfromsysc01wherecjgdm=left(a.cywdbd,6)),ywhb=(selectvjgmcfromsysc01wherecjgdm=a.cywdbd),htzt=(selectvsjxcfromsysc03dwhereczddm='htzt'andcsjxm=a.chtzt),htbs=1,htje=a.njkje,lxje=a.njkje*a.iqx*a.nhtyll*0.001fromcrec01cawherea.bkhlx='1'共2頁  第1頁 

學習Oracle 的儲存過程2

呵呵,繼續學習吧,好記性不如懶筆頭 是這麼說的不?現在用oracle資料庫的挺多的,但要想學好oracle資料庫也並不是一件太容易的事情呀,那就不斷學習,不斷總結吧,遇到什麼問題,記下來再想辦法解決它,那不就積少成多啦!先說一下儲存過程裡的引數吧,in 引數是常量,不能改值,不寫預設為in out引...

我的分頁儲存過程

alter procedure sqldatapaging tbname varchar 255 表名 tbfields varchar 1000 返回字段 orderfield varchar 255 排序的欄位名 pagesize int,頁尺寸 pageindex int,頁碼 orderty...

我呼叫的儲存過程

儲存過程 create procedure createdjh tablename nvarchar 40 指定你的表名 columname nvarchar 50 指定乙個那一列是id idformate nvarchar 30 單號的格式,如配件採購單為 cgd latestid char 16...