- 论坛徽章:
- 0
|
我写了一个程序,主要结构是:
先在父进程中与数据库建立一个连接,然后监听某个端口,一但有报文,就fork一个子进程进行处理(报文比较频繁),在子进程中进行数据库操作(如下),然后退出
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR aa[200+1];
int num;
EXEC SQL END DECLARE SECTION;
....
EXEC SQL WHENEVER NOT FOUND goto _NFOUND;
EXEC SQL WHENEVER SQLERROR goto _ERR;
EXEC SQL SELECT count(*) INTO :num FROM table_a
WHERE aa = :aa;
....
前面的操作都正确,但在一段时间后,查询会出现1000错误:
01000, 00000, "maximum open cursors exceeded"
// *Cause:
// *Action:
1我程序这样的结构有没有问题?能不能在父进程中建立连接,然后子进程中查询?还是要在子进程中建连接。。。
2像我上面那样简单的SQL语句执行之后为什么会有1000错误?游标没有释放?如何释放?我看到好像说可以设置HOLD_CURSOR=NO和RELEASE_CURSOR=YES来解决,是否可以?怎么设? |
|