执行的语句
char *sql_stmt =
"INSERT INTO emp (empno) VALUES (:e)"; //empno是int型
char empno[ARRAY_SIZE][4];
array_size = ARRAY_SIZE;赋值:binda->V[0] = (char *) empno;
binda->L[0] = (long) 4;
binda->T[0] = 1;
binda->I[0] = (short *)0;
/* Initialize the data buffers. */
strcpy(&empno[0] [0], "100");
empno[0][3] = -51;
strcpy(&empno[1] [0], "100");
empno[1][3] = -51;
执行:
EXEC SQL FOR :array_size
EXECUTE stmt USING DESCRIPTOR binda;使用这种方法可以insert两条记录到 emp但是
如果empno[0][3] = -51; 改为 empno[0][3] = '\0';执行则会报错 ORA-01722: 无效数字还有如果这样定义:
char empno[ARRAY_SIZE][5];
binda->L[0] = (long) 5;无论empno[0][3] 赋什么值 都会报错 ORA-01722: 无效数字原因可能是oracle判断字符结束不是使用 '\0',但有不知道是什么
那位高手遇到过这种问题,请指教.
char *sql_stmt =
"INSERT INTO emp (empno) VALUES (:e)"; //empno是int型
char empno[ARRAY_SIZE][4];
array_size = ARRAY_SIZE;赋值:binda->V[0] = (char *) empno;
binda->L[0] = (long) 4;
binda->T[0] = 1;
binda->I[0] = (short *)0;
/* Initialize the data buffers. */
strcpy(&empno[0] [0], "100");
empno[0][3] = -51;
strcpy(&empno[1] [0], "100");
empno[1][3] = -51;
执行:
EXEC SQL FOR :array_size
EXECUTE stmt USING DESCRIPTOR binda;使用这种方法可以insert两条记录到 emp但是
如果empno[0][3] = -51; 改为 empno[0][3] = '\0';执行则会报错 ORA-01722: 无效数字还有如果这样定义:
char empno[ARRAY_SIZE][5];
binda->L[0] = (long) 5;无论empno[0][3] 赋什么值 都会报错 ORA-01722: 无效数字原因可能是oracle判断字符结束不是使用 '\0',但有不知道是什么
那位高手遇到过这种问题,请指教.
是不是不能这样使用
用ANSI 动态SQL可能可以
高手指点一下