sybase iq 如何在游标循环中Commit
对于sybase IQ , 在游标循环中, 主要想每更新100条 提交一次 , 但当提交后 就会导致 关闭游标
ALTER PROCEDURE "ETL_tbl_test1"()
as
/* RESULT( column_name column_type, ... ) */
BEGIN
declare @a integer
declare @b integer
declare @c varchar(12)
declare @d char(4)
declare @n integer
declare @cn integer
declare v_name cursor for select * from tbl_test for update of a,b
---set close on endtran off
set @n =1
open v_name
fetch v_name into @a,@b,@c,@d
while (@@sqlstatus=0)
begin
print '@a....'||@a
print '@b....'||@b
print '@c....'||@c
print '@d....'||@d
set @a=@a*11
set @b=@b*22
update tbl_test set a=@a,b=@b where current of v_name
set @cn=mod(@n,100)
----主要想每更新100条 提交一次
if (@cn=0)
begin
commit
end
set @n=@n+1
fetch v_name into @a,@b,@c,@d
end
close v_name
deallocate v_name
--set close on endtran on
END
[ 本帖最后由 wejie_2000 于 2009
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17066567/viewspace-760074/
,如需转载,请注明出处,否则将追究法律责任。