下面通过一个实际的例子学习SQLServer存储过程。所谓应用而学。
-
??
-
CREATE?PROCEDURE??xxxxxxxx_p ??
-
?( ??
-
????
-
??@ym???char(6) ??
-
?) ??
-
As??
-
????
-
?declare?@ym_ln?char(6) ??
-
?declare?@cpcode?char(10),??
-
??@cpname?char(50),??
-
??@swcode?char(10),??
-
??@swname?char(50),??
-
??@czgscode?char(10),??
-
??@czgscode_?char(10),??
-
??@czgsname?char(50),??
-
??@qylx?char(2),??
-
??@qyxz?char(30) ??
-
?declare?@tdcode?char(10),??
-
??@sb_amt?numeric,??
-
??@sb_ln_amt?numeric,??
-
??@sh_amt?numeric,??
-
??@sh_ln_amt?numeric,??
-
??@ts_amt?numeric,??
-
??@ts_ln_amt?numeric??
-
?declare?@ybmy?numeric(12,6),??
-
??@jljg?numeric(12,??
-
??@other?numeric(12,??
-
??@ybmy_ln?numeric(12,??
-
??@jljg_ln?numeric(12,??
-
??@other_ln?numeric(12,6) ??
-
?declare?@rowcount?int??
-
???
-
?delete?from?cs_xxxxxxxx?where?ym=@ym ??
-
????
-
?set?@ym_ln=cast((substring(@ym,1,4)-1)?as?char(4))?+substring(@ym,5,2) ??
-
???
-
?declare?cur_xxxx?cursor?for? ??
-
??select?cpcode.code?as?cpcode?,cpcode.name?as?cpname?,cpcode.swcode?as?swcode,swcode.name??
-
??as?swname,cs_swcode_czgs.czgs?as?czgscode,cpcode.qylx?as?qylx?from?cpcode? ??
-
??left?join?cs_swcode_czgs?on?cpcode.swcode=cs_swcode_czgs.swcode? ??
-
??left?join?swcode?on?cpcode.swcode=swcode.code?where?cpcode.swcode<>''? ??
-
???
-
?open?cur_xxxx ??
-
???
-
?fetch?next?from?cur_xxxx? ??
-
??into??@cpcode,@cpname,@swcode,@swname,@czgscode,@qylx ??
-
???
-
?while?@@fetch_status?=?0 ??
-
?begin??
-
????
-
??select?@czgscode_=czgs?from?cs_cpcode_czgs?where?cpcode=@cpcode ??
-
????
-
??if?@czgscode_?is?not?null??
-
???set?@czgscode=@czgscode_ ??
-
??select?@czgsname=name?from?cs_czgs?where?code=@czgscode ??
-
????
-
??if?@qylx='11' ??
-
???set?@qyxz='内资企业' ??
-
??else??
-
???set?@qyxz='外商投资企业' ??
-
????
-
??select?@sb_amt=isnull(sum(mdtse),0)?from?mdtsb?where?sb_ym=@ym?and?cpcode=@cpcode ??
-
??select?@sb_ln_amt=isnull(sum(mdtse),0)?from?mdtsb?where?sb_ym=@ym_ln?and?cpcode=@cpcode ??
-
????
-
????
-
????
-
????
-
??goto?insertmodule ??
-
?????
-
????
-
????
-
insertmodule: ??
-
????
-
??if?@sb_amt??????is?null?set?@sb_amt????=0???????? ??
-
??if?@sb_ln_amt????is?null?set?@sb_ln_amt???=0??????????? ??
-
??if?@sh_amt??????is?null?set?@sh_amt????=0???????? ??
-
??if?@sh_ln_amt????is?null?set?@sh_ln_amt???=0??????????? ??
-
??if?@ts_amt??????is?null?set?@ts_amt????=0???????? ??
-
??if?@ts_ln_amt?????is?null?set?@ts_ln_amt???=0?? ??
-
????
-
????select?@ybmy=zb?from?cs_scqybl?where?tdcode='一般贸易'?and?ym=@ym?and?cpcode=@cpcode ??
-
????select?@ybmy_ln=zb?from?cs_scqybl?where?tdcode='一般贸易'?and?ym=@ym_ln?and?cpcode=@cpcode ??
-
????if?@ybmy?is?null??
-
?????begin??
-
????????
-
??????exec?xxxbl?@cpcode,@ym ??
-
?????end??
-
????if?@ybmy_ln?is?null??
-
?????begin??
-
??????exec?xxxxbl?@cpcode,@ym_ln ??
-
?????end??
-
????select?@jljg=zb?from?cs_scqybl?where?tdcode='进料加工'?and?ym=@ym?and?cpcode=@cpcode ??
-
????select?@jljg_ln=zb?from?cs_scqybl?where?tdcode='进料加工'?and?ym=@ym_ln?and?cpcode=@cpcode ??
-
????select?@other=zb?from?cs_scqybl?where?tdcode='其他'?and?ym=@ym?and?cpcode=@cpcode ??
-
????select?@other_ln=zb?from?cs_scqybl?where?tdcode='其他'?and?ym=@ym_ln?and?cpcode=@cpcode ??
-
????
-
????insert?into?cs_xxxxxxxx?(xx,xxx,xxxx)?values(vv,vvv,vvvv?) ??
-
????
-
??fetch?next?from?cur_xxxx?into??@cpcode,@qylx ??
-
???
-
?end??
-
???
-
?close?cur_xxxx ??
-
???
-
?deallocate?cur_xxxx ??
-
GO ??
?
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|