- 论坛徽章:
- 0
|
背景是:
我想写一个函数,功能是在程序发生严重错误时往表中插入记录,以用作告警。因为这个函数要提供给组员共用,而组员的程序调用处可能是已经连接了oracle的,可能是未连接过oracle的;所以我的函数中必须连接oracle一次。
程序:
在unix下,用proc编程。oracle是9i版本的。
在子进程关闭连接后,
父进程的下一步数据库操作语句报出-3113错,再下一条爆出-3114错。指连接已经断开。
如何才能让子进程的关闭操作不影响父进程?
大致流程如下:
{
EXEC SQL CONNECT :v_tnsstr;
...
if( (pid=fork())==0 )//子进程
{
EXEC SQL CONNECT :v_tnsstr;
exec sql insert into table_b ....;
exec sql commit;
EXEC SQL ROLLBACK WORK RELEASE;
exit(0);
}else
{
waitpid(pid,null,0);
}
select * from table_a;
EXEC SQL ROLLBACK WORK RELEASE;
return 0;
} |
|