DB2
时间:2007-12-23 来源:不详 作者:迈克DB
我看到很多人要sql的存储过程的例子,所以我就把我以前写的发出来,和大家一起探讨!
下面是我在苏州的时候写的代码,,是把oracle上的移植过来的,假如大家要oracle的代码,可以告诉我一声,我发
这段代码很全,有出错处理,游标动态定义,联合体用户的使用,分支和循环语句都有,,
到/sqllib/下面去找,很多例子的代码的
我献丑了!!!
CREATEPROCEDUREIPD.st_inter_PROF(INin_Transfer_iddec(6,0),
INin_TRANS_TYPE_iddec(2,0),
INin_begin_datetimestamp,
INin_TRANSFER_namevarchar(1024),
OUTo_err_noint,
OUTo_err_msgvarchar(1024))
LANGUAGESQL
------------------------------------------------------------------------
--SQL存储过程
------------------------------------------------------------------
----
----
--抽取acct_item_billingday,acct_item表--
--author:zsk2002/06/27--
--updatebyzskat2002/11/25asSZ--
--movefromoracletodb2bydengl2002-12-8assz--
--返回值结果:0:执行通过--
--1:执行不通过--
本文来自织梦
---1:调用本过程时异常出错--
--联合体用户是ADMINISTRATORBILL.BILL.*/BILL.CAL.*--
-------------------------------------------------------------------
------------------------------------------------------------------------
P1:BEGIN
--临时变量出错变量
declarerecintegerdefault0;
declareSQLCODEintegerdefault0;
declarestmtvarchar(1024);
declareat_endintegerdefault0;
declarer_codeintegerdefault0;
declarestatevarchar(1024)default'AAA';--记录程序当前所作工作
declaretemp_intintegerdefault0;
--声明变量
declarev_cycle_strvarchar(1000);
declarev_sql_strvarchar(2000);
declaren_numbigint;
declaren_rowsbigint;
declaren_rows_allbigint;
--声明放游标的值
--声明动态游标存储变量
declarec_bill_task_idinteger;
declarebill_taskcursorfors1;
--声明出错处理
DECLAREEXITHANDLERFORSQLEXCEPTION
begin
setr_code=SQLCODE;
seto_err_no=1;
seto_err_msg='处理'||state||'出错'||'错误代码SQLCODE:'||CHAR(r_code);
本文来自织梦
end;
DECLAREcontinueHANDLERfornotfound
begin
SETat_end=1;
seto_err_no=100;
end;
--开始拉
selectdeal_cycle
intov_cycle_str
fromipd.transfer_task
wheretransfer_id=in_transfer_Id;
--v_cycle_str:='%'||v_cycle_str;
ifin_trans_type_id=7
then
setn_num=1;
---将汇总数据写入任务表
updateipd.transfer_task
setrows_cnt=0
wheretransfer_id=in_transfer_id;
--声明动态游标
setstmt='selectdistinctbill_task_idfromADMINISTRATOR.bill_task_cyclea,ADMINISTRATOR.billing_cyclebwheresubstr(char(b.CYCLE_BEGIN_DATE),1,4)||substr(char(b.CYCLE_BEGIN_DATE),6,2)='||char((integer(v_cycle_str)-1))||'anda.billing_cycle_id=b.billing_cycle_id';
prepares1fromstmt;
--executes1;
openbill_task;--usingv_cycle_str;
--声明完毕
fetch_loop1:
loop
fetchbill_taskintoc_bill_task_id;
文章评论
共有位Admini5网友发表了评论 查看完整内容