在linux下编译如下PROC程序后运行
查询结果大约在2分钟后显示
不光这一个程序
所有对数据库的访问操作都很慢
请大侠们指点下
谢谢
我用的是oracle数据库



#include "/usr/local/ora/precomp/public/sqlca.h"

#ifndef ORA_PROC

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#endif

  void sql_error(char *msg) 
  { 
  printf("\n%s %s\n", msg,(char *)sqlca.sqlerrm.sqlerrmc); 
  EXEC SQL ROLLBACK RELEASE; 
  exit(0);
  }

int main()
{
  EXEC SQL INCLUDE sqlca; /* 定义并描述了SQLCA的结构。SQLCA用于应用程序和数据库之间的通讯,其中的SQLCODE返回SQL语句执行后的结果状态。 */
  EXEC ORACLE OPTION (RELEASE_CURSOR = YES); /*使PROC 在执行完后释放与嵌入SQL有关资源 */ 
  EXEC SQL WHENEVER SQLERROR DO sql_error(" <ERROR> ");
  /*声明宿主变量*/
  EXEC SQL BEGIN DECLARE SECTION;
  char oraCN[50];
  char name[25];
  char id[3];
  EXEC SQL END DECLARE SECTION;
  /*设置连接数据库的用户名、密码和数据库服务名*/
  memset(oraCN, 0, 50);
  strcpy(oraCN,"zy/zy@//192.168.152.130:1521/orcl");
  
 /* oraCN.len = strlen(oraCN.arr);
  oraCN.arr[oraCN.len] = '\0';*/
  /*以test用户连接数据库*/
  EXEC SQL CONNECT :oraCN;
  printf("Connect!\n");
  /*声明游标*/
  EXEC SQL DECLARE stu_cursor CURSOR FOR
  SELECT bank_code,bank_name from par_bank WHERE IS_JW = 1;
  printf("DECLARE CURSOR OK!\n");
  /*打开游标*/
  EXEC SQL OPEN  stu_cursor;
  if(sqlca.sqlcode == 0)
  {
      printf("OPEN CURSOR OK!\n");
  }
  else {
      printf("open err![%d]", sqlca.sqlcode);
  }
  
  while(1)
  {
    EXEC SQL FETCH stu_cursor INTO :id,:name;
    if(sqlca.sqlcode != 0 && sqlca.sqlcode != 1403)
    {
        printf("error!");
    }
    else if (sqlca.sqlcode == 1403)
    {
        break;
    }
    
    printf("Id=%s   Name=%s    \n",id,name);
  }
  /*关闭游标*/
  EXEC SQL CLOSE stu_cursor;
  /*提交事务并断开与数据库的连接*/
  EXEC SQL COMMIT WORK RELEASE;
  printf("Disconnect!\n");
  return 0;
}