现在有问题如下:
error C2043: illegal break
if (sqlca.sqlcode == 100) break ;
------------------------------------------------------------
程序代码如下(耐心点):
出错语句. /* EXEC SQL SELECT COUNT(LoginID) into :ok from Teacher where LoginID=:logpwd; */ {
struct sqlexd sqlstm;
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select count(LoginID) into :b0 from Teacher where LoginID\
=:b1";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )562;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)&ok;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)logpwd;
sqlstm.sqhstl[1] = (unsigned int )9;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 100) break; //此为出错原因
if (sqlca.sqlcode < 0) sql_error();
}
------------------------------
正确语句: /* EXEC SQL CALL teacher_pack.islogin_proc(:logpwd,:logname,:ok); */ {
struct sqlexd sqlstm;
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "call teacher_pack.islogin_proc(:b0,:b1,:b2)";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )562;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)logpwd;
sqlstm.sqhstl[0] = (unsigned int )9;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)logname;
sqlstm.sqhstl[1] = (unsigned int )9;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)&ok;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) sql_error();
} 两条语句在同一个函数中:
main()
{
....
switch(logflag[0])
{
case 'm':
case 'M':
managerModern(logname,logpwd); //进入管理员模块
break;
case 't':
case 'T':
teacherFunc(logname,logpwd); //进入老师模块
break;
case 's':
case 'S':
studentFunc(logname,logpwd); //进入学生模块
break;
default:
printf("\n身份有误!\n");
exit(1);
break;
}
....
}
teacherFunc(logname,logpwd); //进入老师模块
{
.....
//EXEC SQL SELECT COUNT(LoginID) into :ok from Teacher where LoginID=:logpwd; //出错语句
EXEC SQL CALL teacher_pack.islogin_proc(:logpwd,:logname,:ok); //检查此老师是否注册
.....
}
error C2043: illegal break
if (sqlca.sqlcode == 100) break ;
------------------------------------------------------------
程序代码如下(耐心点):
出错语句. /* EXEC SQL SELECT COUNT(LoginID) into :ok from Teacher where LoginID=:logpwd; */ {
struct sqlexd sqlstm;
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select count(LoginID) into :b0 from Teacher where LoginID\
=:b1";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )562;
sqlstm.selerr = (unsigned short)1;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)&ok;
sqlstm.sqhstl[0] = (unsigned int )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)logpwd;
sqlstm.sqhstl[1] = (unsigned int )9;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 100) break; //此为出错原因
if (sqlca.sqlcode < 0) sql_error();
}
------------------------------
正确语句: /* EXEC SQL CALL teacher_pack.islogin_proc(:logpwd,:logname,:ok); */ {
struct sqlexd sqlstm;
sqlstm.sqlvsn = 12;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "call teacher_pack.islogin_proc(:b0,:b1,:b2)";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )562;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = ( void *)logpwd;
sqlstm.sqhstl[0] = (unsigned int )9;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( void *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned int )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = ( void *)logname;
sqlstm.sqhstl[1] = (unsigned int )9;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( void *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned int )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = ( void *)&ok;
sqlstm.sqhstl[2] = (unsigned int )sizeof(int);
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( void *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned int )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) sql_error();
} 两条语句在同一个函数中:
main()
{
....
switch(logflag[0])
{
case 'm':
case 'M':
managerModern(logname,logpwd); //进入管理员模块
break;
case 't':
case 'T':
teacherFunc(logname,logpwd); //进入老师模块
break;
case 's':
case 'S':
studentFunc(logname,logpwd); //进入学生模块
break;
default:
printf("\n身份有误!\n");
exit(1);
break;
}
....
}
teacherFunc(logname,logpwd); //进入老师模块
{
.....
//EXEC SQL SELECT COUNT(LoginID) into :ok from Teacher where LoginID=:logpwd; //出错语句
EXEC SQL CALL teacher_pack.islogin_proc(:logpwd,:logname,:ok); //检查此老师是否注册
.....
}
这里不能用break。
它是对PC源文件预编译时产生的,
不是我写的。
预编译正确语句: /* EXEC SQL CALL teacher_pack.islogin_proc(:logpwd,:logname,:ok); */ 时,
却没有以上的错误。????