我有一段proc程序其变量定义如下:
#define MAX_NUM 10000
...
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR userid[20];
VARCHAR password[20];
VARCHAR db_name[20];
int max_fetch = 10000;
int ins_num=10000;
int curr_rows = 0;
char ORG_NO[MAX_NUM][9+1];
char DEPT_CODE[MAX_NUM][2+1];
char PRODUCT_CODE[MAX_NUM][11+1];
char CUS_NO[MAX_NUM][19+1];
char CUU_CODE[MAX_NUM][3+1];
double BOK_BAL[MAX_NUM];
double DR_ACINT[MAX_NUM];
double CR_ACINT[MAX_NUM];
double DR_ACCM[MAX_NUM];
double TODAY_DRACCM[MAX_NUM];
double CR_ACCM[MAX_NUM];
double TODAY_CRACCM[MAX_NUM];
double LINTDT[MAX_NUM];
char DR_RATE_CODE[MAX_NUM][3+1];
char CR_RATE_CODE[MAX_NUM][3+1];
double DIF_BAL[MAX_NUM];
double CIF_BAL[MAX_NUM];
double DR_RATE[MAX_NUM];
double CR_RATE[MAX_NUM];
double DRCR_CHG_DATE[MAX_NUM];
char ACTSTS[MAX_NUM][1+1];
char RECSTS[MAX_NUM][1+1];
double OPEN_DATE[MAX_NUM];
double CLS_DATE[MAX_NUM];
char ACTGLC[MAX_NUM][4+1];
char CURR_APCODE[MAX_NUM][20+1];
EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE SQLCA; strcpy(userid.arr,"jstmp");
userid.len=strlen(userid.arr);
strcpy(password.arr,"123456");
password.len=strlen(password.arr);
strcpy(db_name.arr,"SZORACLE");
db_name.len=strlen(db_name.arr);
EXEC SQL CONNECT:userid IDENTIFIED BY:password USING :db_name;
printf("connect to oracle!%d\n",SQLCODE);
...程序执行到联接数据库时居然没任何反应,SQLCODE的值也没打印出来
但是我把变量定义的char CURR_APCODE[MAX_NUM][20+1];
改成char CURR_APCODE[100][20+1];以后,一切正常,我在makefile中说明了MAX_NUM的,请大虾们指点一下,多谢!
#define MAX_NUM 10000
...
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR userid[20];
VARCHAR password[20];
VARCHAR db_name[20];
int max_fetch = 10000;
int ins_num=10000;
int curr_rows = 0;
char ORG_NO[MAX_NUM][9+1];
char DEPT_CODE[MAX_NUM][2+1];
char PRODUCT_CODE[MAX_NUM][11+1];
char CUS_NO[MAX_NUM][19+1];
char CUU_CODE[MAX_NUM][3+1];
double BOK_BAL[MAX_NUM];
double DR_ACINT[MAX_NUM];
double CR_ACINT[MAX_NUM];
double DR_ACCM[MAX_NUM];
double TODAY_DRACCM[MAX_NUM];
double CR_ACCM[MAX_NUM];
double TODAY_CRACCM[MAX_NUM];
double LINTDT[MAX_NUM];
char DR_RATE_CODE[MAX_NUM][3+1];
char CR_RATE_CODE[MAX_NUM][3+1];
double DIF_BAL[MAX_NUM];
double CIF_BAL[MAX_NUM];
double DR_RATE[MAX_NUM];
double CR_RATE[MAX_NUM];
double DRCR_CHG_DATE[MAX_NUM];
char ACTSTS[MAX_NUM][1+1];
char RECSTS[MAX_NUM][1+1];
double OPEN_DATE[MAX_NUM];
double CLS_DATE[MAX_NUM];
char ACTGLC[MAX_NUM][4+1];
char CURR_APCODE[MAX_NUM][20+1];
EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE SQLCA; strcpy(userid.arr,"jstmp");
userid.len=strlen(userid.arr);
strcpy(password.arr,"123456");
password.len=strlen(password.arr);
strcpy(db_name.arr,"SZORACLE");
db_name.len=strlen(db_name.arr);
EXEC SQL CONNECT:userid IDENTIFIED BY:password USING :db_name;
printf("connect to oracle!%d\n",SQLCODE);
...程序执行到联接数据库时居然没任何反应,SQLCODE的值也没打印出来
但是我把变量定义的char CURR_APCODE[MAX_NUM][20+1];
改成char CURR_APCODE[100][20+1];以后,一切正常,我在makefile中说明了MAX_NUM的,请大虾们指点一下,多谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货