- 論壇徽章:
- 0
|
背景是:
我想寫(xiě)一個(gè)函數(shù),功能是在程序發(fā)生嚴(yán)重錯(cuò)誤時(shí)往表中插入記錄,以用作告警。因?yàn)檫@個(gè)函數(shù)要提供給組員共用,而組員的程序調(diào)用處可能是已經(jīng)連接了oracle的,可能是未連接過(guò)oracle的;所以我的函數(shù)中必須連接oracle一次。
程序:
在unix下,用proc編程。oracle是9i版本的。
在子進(jìn)程關(guān)閉連接后,
父進(jìn)程的下一步數(shù)據(jù)庫(kù)操作語(yǔ)句報(bào)出-3113錯(cuò),再下一條爆出-3114錯(cuò)。指連接已經(jīng)斷開(kāi)。
如何才能讓子進(jìn)程的關(guān)閉操作不影響父進(jìn)程?
大致流程如下:
{
EXEC SQL CONNECT :v_tnsstr;
...
if( (pid=fork())==0 )//子進(jìn)程
{
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;
} |
|