这段代码几乎是按照课本上的示例程序写的,但是编译时却出了个很古怪的问题:
Found end of file while scanning a SQL statement.我的代码po在下面,帮我看看可能是什么问题,谢谢大家:
#include <stdio.h>
#include <string.h>/*说明段*/
typedef char asciz;
/*定义asciz和STRING等价*/
EXEC SQL BEGIN DECLARE SECTION;
EXEC SQL TYPE asciz IS STRING(20);
asciz username[20];
asciz password[20];
long area_id;
/*改成VARCHAR可以吗?*/
char area_name[20];
char code[2];
EXEC SQL END DECLARE SECTION;/*说明通讯区*/
EXEC SQL INCLUDE SQLCA;void WriteError(int n1, int n2, char sTemp) {};int main () {

strcpy(username, "cal");
strcpy(password, "caltest");

EXEC SQL WHENEVER SQLERROR goto sql_error;
EXEC SQL CONNECT :username IDENTIFIED BY :password;
printf("\n已经以%s的身份连接入ORACLE。", username);

printf("\n请输入地名的ID(输入“0”退出)");
scanf("%ls", &area_id);
if (area_id == 0) {

EXEC SQL COMMIT WORK RELEASE;
printf("\n退出程序。");
exit(0);

}

/*PL/SQL块开始*/
EXEC SQL EXECUTE
BEGIN
SELECT AREA_CODE_NAME, AREA_CODE
INTO :area_name, :code
FROM AREA_CODE
WHERE AREA_CODE_ID = :area_id;
END;
END_EXEC;

printf("\n\n地名为%s,缩写为%s。\n", area_name, code);

sql_error:
EXEC SQL WHENEVER SQLERROR continue;
EXEC SQL ROLLBACK WORK RELEASE;
printf("\n发生错误!退出程序!");
exit(1);
return 0;

}