我的目的:我是通过mssql查询mysql里的内容
读取mysql的记录,然后更新状态为0 ,表示已经读取过
本来我想用触发器的,但是用不了,我这台机的msdtc正常启动,但服务器的mysql我不能操作
可以用储存过程,下面是我写的,感觉很差,望高手指教.
这个过程,经常出现 MySQL server has gone away
根本用不了 偶而可以更新三四条记录,然后就不行了,
会不会是网速问题?还有这个循环是不是有问题
declare cursor_insert cursor for select * FROM openquery(localhost,'select mbno,msg,sid from kd_sms.m_sms where report=0')
declare @i varchar(50)
declare @j varchar(250)
declare @k int
open cursor_insert
fetch NEXT from cursor_insert into @i , @j , @k
while @@fetch_status=0
begin
update openquery (localhost,'select Report,sid from kd_sms.m_sms where Report=-1 ')
set Report=0 where sid=@k
fetch NEXT from cursor_insert into @i ,@j ,@k
end
close cursor_insert
deallocate cursor_insert
读取mysql的记录,然后更新状态为0 ,表示已经读取过
本来我想用触发器的,但是用不了,我这台机的msdtc正常启动,但服务器的mysql我不能操作
可以用储存过程,下面是我写的,感觉很差,望高手指教.
这个过程,经常出现 MySQL server has gone away
根本用不了 偶而可以更新三四条记录,然后就不行了,
会不会是网速问题?还有这个循环是不是有问题
declare cursor_insert cursor for select * FROM openquery(localhost,'select mbno,msg,sid from kd_sms.m_sms where report=0')
declare @i varchar(50)
declare @j varchar(250)
declare @k int
open cursor_insert
fetch NEXT from cursor_insert into @i , @j , @k
while @@fetch_status=0
begin
update openquery (localhost,'select Report,sid from kd_sms.m_sms where Report=-1 ')
set Report=0 where sid=@k
fetch NEXT from cursor_insert into @i ,@j ,@k
end
close cursor_insert
deallocate cursor_insert
更新这样写的话,服务器就不用这么大负荷
但这样更新不了,不知为什么,是不是那个@k变量有问题
update openquery (localhost,'select Report,sid from kd_sms.m_sms where sid=@k ')
set Report=0 where sid=@k