heting
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
40 随笔 :: 9 文章 :: 45 评论 :: 0 Trackbacks
<
2009年3月
>
日
一
二
三
四
五
六
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔分类
c#范例(4)
(rss)
java范例
(rss)
js(3)
(rss)
linux(1)
(rss)
WebSphere(1)
(rss)
数据库(3)
(rss)
随笔档案
2010年10月 (1)
2010年8月 (5)
2010年3月 (2)
2009年11月 (2)
2009年9月 (1)
2009年8月 (1)
2009年7月 (2)
2009年5月 (1)
2009年4月 (3)
2009年3月 (4)
2009年2月 (1)
2009年1月 (3)
2008年12月 (2)
2008年11月 (7)
2008年10月 (4)
2008年9月 (1)
文章档案
2008年9月 (9)
搜索
最新评论
1. re: struts2+freemarker中防止表单的重复提交token
@51互联云-济南程序猿
你什么都不懂,瞎说
--人
2. re: struts2+freemarker中防止表单的重复提交token
没关系,大家好,什么都没有
--人
3. re: struts2+freemarker中防止表单的重复提交token
套头
--人
4. re: struts2+freemarker中防止表单的重复提交token
评论内容较长,点击标题查看
--51互联云-济南程序猿
5. re: struts1文件上传和下载
评论内容较长,点击标题查看
--zuidaima
阅读排行榜
1. struts1文件上传和下载(21125)
2. javax.naming.CommunicationException 的一个相关异常(已解决)(11542)
3. 自己写的一个c#winform打印类(8485)
4. C# 与 C++ 数据类型比较及结构体转换 (7204)
5. WebSphere7.0 上部署struts2 找不到用于处理 JSP 的扩展处理器(2970)
评论排行榜
1. struts1文件上传和下载(23)
2. 自己写的一个c#winform打印类(8)
3. struts2+freemarker中防止表单的重复提交token(6)
4. Ireport在浏览器中的显示代码(2)
5. EJ3.0将EJB程序和WEb程序发布到weblogic10.3是出现的错误weblogic.wsee.async.AsyncResponseBean(2)
MySQL存储过程例子,包含事务,参数,嵌套调用,游标,循环等
drop
procedure
if
exists
pro_rep_shadow_rs;
delimiter
|
--
--------------------------------
--
rep_shadow_rs
--
用来处理信息的增加,更新和删除
--
每次只更新上次以来没有做过的数据
--
根据不同的标志位
--
需要一个输出的参数,
--
如果返回为0,则调用失败,事务回滚
--
如果返回为1,调用成功,事务提交
--
--
测试方法
--
call pro_rep_shadow_rs(@rtn);
--
select @rtn;
--
--------------------------------
create
procedure
pro_rep_shadow_rs(out rtn
int
)
begin
--
声明变量,所有的声明必须在非声明的语句前面
declare
iLast_rep_sync_id
int
default
-
1
;
declare
iMax_rep_sync_id
int
default
-
1
;
--
如果出现异常,或自动处理并rollback,但不再通知调用方了
--
如果希望应用获得异常,需要将下面这一句,以及启动事务和提交事务的语句全部去掉
declare
exit
handler
for
sqlexception
rollback
;
--
查找上一次的
select
eid
into
iLast_rep_sync_id
from
rep_de_proc_log
where
tbl
=
'
rep_shadow_rs
'
;
--
如果不存在,则增加一行
if
iLast_rep_sync_id
=-
1
then
insert
into
rep_de_proc_log(rid,eid,tbl)
values
(
0
,
0
,
'
rep_shadow_rs
'
);
set
iLast_rep_sync_id
=
0
;
end
if
;
--
下一个数字
set
iLast_rep_sync_id
=
iLast_rep_sync_id
+
1
;
--
设置默认的返回值为0:失败
set
rtn
=
0
;
--
启动事务
start
transaction
;
--
查找最大编号
select
max
(rep_sync_id)
into
iMax_rep_sync_id
from
rep_shadow_rs;
--
有新数据
if
iMax_rep_sync_id
>=
iLast_rep_sync_id
then
--
调用
call pro_rep_shadow_rs_do(iLast_rep_sync_id,iMax_rep_sync_id);
--
更新日志
update
rep_de_proc_log
set
rid
=
iLast_rep_sync_id,eid
=
iMax_rep_sync_id
where
tbl
=
'
rep_shadow_rs
'
;
end
if
;
--
运行没有异常,提交事务
commit
;
--
设置返回值为1
set
rtn
=
1
;
end
;
|
delimiter ;
drop
procedure
if
exists
pro_rep_shadow_rs_do;
delimiter
|
--
-------------------------------
--
处理指定编号范围内的数据
--
需要输入2个参数
--
last_rep_sync_id 是编号的最小值
--
max_rep_sync_id 是编号的最大值
--
无返回值
--
-------------------------------
create
procedure
pro_rep_shadow_rs_do(last_rep_sync_id
int
, max_rep_sync_id
int
)
begin
declare
iRep_operationtype
varchar
(
1
);
declare
iRep_status
varchar
(
1
);
declare
iRep_Sync_id
int
;
declare
iId
int
;
--
这个用于处理游标到达最后一行的情况
declare
stop
int
default
0
;
--
声明游标
declare
cur
cursor
for
select
id,Rep_operationtype,iRep_status,rep_sync_id
from
rep_shadow_rs
where
rep_sync_id
between
last_rep_sync_id
and
max_rep_sync_id;
--
声明游标的异常处理,设置一个终止标记
declare
CONTINUE
HANDLER
FOR
SQLSTATE
'
02000
'
SET
stop
=
1
;
--
打开游标
open
cur;
--
读取一行数据到变量
fetch
cur
into
iId,iRep_operationtype,iRep_status,iRep_Sync_id;
--
这个就是判断是否游标已经到达了最后
while
stop
<>
1
do
--
各种判断
if
iRep_operationtype
=
'
I
'
then
insert
into
rs0811 (id,fnbm)
select
id,fnbm
from
rep_shadow_rs
where
rep_sync_id
=
iRep_sync_id;
elseif iRep_operationtype
=
'
U
'
then
begin
if
iRep_status
=
'
A
'
then
insert
into
rs0811 (id,fnbm)
select
id,fnbm
from
rep_shadow_rs
where
rep_sync_id
=
iRep_sync_id;
elseif iRep_status
=
'
B
'
then
delete
from
rs0811
where
id
=
iId;
end
if
;
end
;
elseif iRep_operationtype
=
'
D
'
then
delete
from
rs0811
where
id
=
iId;
end
if
;
--
读取下一行的数据
fetch
cur
into
iId,iRep_operationtype,iRep_status,iRep_Sync_id;
end
while
;
--
循环结束
close
cur;
--
关闭游标
end
;
posted on 2009-03-25 09:55
贺挺
阅读(529)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
Powered by:
BlogJava
Copyright © 贺挺