SELECT 
    T_ZZ.COMHOJINKAKU_KBN,
    T_ZZ.COMTEKIYOSTR_YMD,
    T_ZZ.COMTEKIYOEND_YMD,
    T_ZZ.COMHOJINNM_KNJ,
    T_ZZ.COMHOJINRNM_KNJ
  INTO
    :hojinkaku_tbl
  FROM
       TMMHOJINKAKU T_ZZ
  ORDER BY
    T_ZZ.COMHOJINKAKU_KBN ASC,
    T_ZZ.COMTEKIYOSTR_YMD ASC,
    T_ZZ.COMTEKIYOEND_YMD ASC,
    T_ZZ.COMHOJINNM_KNJ   ASC,
    T_ZZ.COMHOJINRNM_KNJ  ASC
  ;if ( sqlca.sqlcode == CM_SQL_DONE ) {
hojinkaku_tbl_cnt = sqlca.sqlerrd[2] ;

else if ( sqlca.sqlcode == CM_SQL_NOT_FOUND ) {if ( sqlca.sqlerrd[2] > 0 ) {/*该处的判定有必要吗?,上面已经判了   sqlca.sqlcode == CM_SQL_NOT_FOUND,难道sqlca.sqlcode == CM_SQL_NOT_FOUND时的sqlerrd[2]不是0吗?请高手指教!!!*/
   hojinkaku_tbl_cnt = sqlca.sqlerrd[2] ;} else {
/*打印错误信息!*/
}

解决方案 »

  1.   

    http://dev.csdn.net/article/65/65497.shtm每个可执行SQL语句执行后,Oracle 运行时会在这个结构中填入信息。sqlerrd 这个二进制整形数组包含6个元素:  
    sqlerrd[0] - 保留 
    sqlerrd[1] - 保留 
    sqlerrd[2] - 最近被执行的SQL语句影响的记录行数。 
    sqlerrd[3] - 保留 
    sqlerrd[4] - 分析最近执行语句出现错误,错误的开始字符的偏移。 
    sqlerrd[5] - 保留 所以,如果已经判断了 sqlca.sqlcode == CM_SQL_NOT_FOUND,就没有必要判断 sqlca.sqlerrd[2] > 0了。因为此时这个值必然是0
      

  2.   

    sqlca.sqlcode == CM_SQL_DONE 时,sqlerrd[2]被写入执行的SQL语句记录行数。
    但 sqlca.sqlcode == CM_SQL_NOT_FOUND时,sqlerrd[2]被写入吗?
    请指教!!!!