处理的,你看一下编译后.c文件
个人不赞成这种写法,最好在每一条sql语句后都要判断

解决方案 »

  1.   

    编译后的.c文件是sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
    并不是if(sqlca.sqlcode <0 ) sql_error();
    可是我不明白,为什么书上写的可以截获,怎么就截获不到呢
      

  2.   

    sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
    if (sqlca.sqlcode < 0) error();
    都有
    你还有没有别的处理错误语句,比如循环的判断等
      

  3.   

    你试试这样颠倒一下呢?
       EXEC SQL CONNECT :username IDENTIFIED BY :password;
       EXEC SQL WHENEVER SQLERROR DO sql_error();或者
       EXEC SQL CONNECT :username IDENTIFIED BY :password;
       调用insert_record();
       EXEC SQL WHENEVER SQLERROR DO sql_error();呵呵,我觉得最好在每一条sql语句后做一次判断。
      

  4.   

    最好用sqlca.sqlcode==0,1403,-1405等来判断执行的结果
    也好处理错误
    这么些太广泛,也不容易知道何处出错