- 论坛徽章:
- 0
|
这种方案是否可行
游标改用普通游标。
游标取出当前记录后,fork子进程。
主进程只管从游标取数。
子进程进行事务、处理、判断、修改状态、提交等等。
主进程等子进程的结束信号,然后取下一条记录。
程序段:
declare test_cur cursor with hold for
select .... from A where ... order by ... with ur;
open test_cur;
while( 1 ){
fecth test_cur into ......;
判断SQLCODE
pid = fork();
if( pid == 0 ) { /* 子进程干活 */
sqledtin( &sqlca );
setsid();
signal( SIGHUP, SIG_IGN );
db_disconn( G_mdb_name );
begin_work(); /* 其实就是设置了一个标志 */
SQL 操作,修改其他表或者游标所在表的数据。
根据结果判断 commit or rollback。
db_disconn();
exit();
}
/* 主进程等待子进程结束 */
}
close test_cur; |
|