why ora1801
Date: Thu, 3 Jul 2008 08:46:15 -0700 (PDT)
Message-ID: <d3d1be5b-540e-4216-a1a8-db1768fa625e@v26g2000prm.googlegroups.com>
Hi
My proc program report a ora1801 error. My code is like this
-----tblPdspTxnMon.h------------
typedef struct
{
char sa_pri_key[ 36 ]; char sa_related_key[ 36 ]; char sa_alt_key[ 36 ]; char sa_lock_ind[ 2 ]; char sa_rout_fwd_id[ 14 ]; char sa_rout_rcv_id[ 14 ]; char sa_slmt_sys_date[ 5 ];
short n_slmt_group;
char sa_slmt_loc_date[ 5 ]; char sa_slmt_fwd_id[ 14 ]; char sa_slmt_rcv_id[ 14 ]; char sa_slmt_mcht_id[ 16 ]; char sa_slmt_term_id[ 9 ]; char sa_slmt_batch_num[ 7 ]; short n_txn_type;
short n_txn_fwd_stat;
short n_txn_rcv_stat;
char sa_slmt_pri_acct[ 24 ]; int sa_txn_amount; int sa_orig_amount; char sa_slmt_cur_code[ 4 ]; char sa_auth_rsp_code[ 8 ]; char sa_slmt_fee_type[ 9 ]; char sa_acct[ 24 ]; char sa_rsp_code1[ 3 ]; char sa_rsp_code2[ 3 ]; char sa_rsp_code3[ 3 ]; char sa_cmp_data[ 21 ]; char sa_sav1_data[ 201 ]; char sa_sav2_data[ 51 ]; char sa_rsp_data[ 51 ]; char sa_bak_data[ 81 ]; char sa_comm_data[ 41 ]; int l_total_fee; int l_fwd_fee_1; int l_fwd_fee_2; int l_rcv_fee_1;
int l_rcv_fee_2;
int l_rec_updt_usr_id;
char tm_rec_updt_time[ 30 ]; char tm_rec_crt_time[ 30 ]; char sa_row_id[ 19 ];
} tbl_txn_mon_t;
tbl_pdsp_txn_mon.pc---------------------------------------------------------int tbl_txn_mon2_fetch_slice(tbl_txn_mon_t *tbl_txn_mon, int *sql_code)
{
EXEC SQL BEGIN DECLARE SECTION;
tbl_txn_mon_t *db_tbl_txn_mon;
EXEC SQL END DECLARE SECTION;
db_tbl_txn_mon = tbl_txn_mon;
EXEC SQL FETCH
cur_txn_mon2_slice
INTO
:db_tbl_txn_mon->sa_pri_key,
:db_tbl_txn_mon->sa_related_key,
:db_tbl_txn_mon->sa_alt_key,
:db_tbl_txn_mon->sa_lock_ind,
:db_tbl_txn_mon->sa_rout_fwd_id,
:db_tbl_txn_mon->sa_rout_rcv_id,
:db_tbl_txn_mon->sa_slmt_sys_date,
:db_tbl_txn_mon->n_slmt_group,
:db_tbl_txn_mon->sa_slmt_loc_date,
:db_tbl_txn_mon->sa_slmt_fwd_id,
:db_tbl_txn_mon->sa_slmt_rcv_id,
:db_tbl_txn_mon->sa_slmt_mcht_id,
:db_tbl_txn_mon->sa_slmt_term_id,
:db_tbl_txn_mon->sa_slmt_batch_num,
:db_tbl_txn_mon->n_txn_type,
:db_tbl_txn_mon->n_txn_fwd_stat,
:db_tbl_txn_mon->n_txn_rcv_stat,
:db_tbl_txn_mon->sa_slmt_pri_acct,
:db_tbl_txn_mon->sa_txn_amount,
:db_tbl_txn_mon->sa_orig_amount,
:db_tbl_txn_mon->sa_slmt_cur_code,
:db_tbl_txn_mon->sa_auth_rsp_code,
:db_tbl_txn_mon->sa_slmt_fee_type,
:db_tbl_txn_mon->sa_acct,
:db_tbl_txn_mon->sa_rsp_code1,
:db_tbl_txn_mon->sa_rsp_code2,
:db_tbl_txn_mon->sa_rsp_code3,
:db_tbl_txn_mon->sa_cmp_data,
:db_tbl_txn_mon->sa_sav1_data,
:db_tbl_txn_mon->sa_sav2_data,
:db_tbl_txn_mon->sa_rsp_data,
:db_tbl_txn_mon->sa_bak_data,
:db_tbl_txn_mon->sa_comm_data,
:db_tbl_txn_mon->l_total_fee,
:db_tbl_txn_mon->l_fwd_fee_1,
:db_tbl_txn_mon->l_fwd_fee_2,
:db_tbl_txn_mon->l_rcv_fee_1,
:db_tbl_txn_mon->l_rcv_fee_2,
:db_tbl_txn_mon->l_rec_updt_usr_id,
:db_tbl_txn_mon->tm_rec_updt_time,
:db_tbl_txn_mon->tm_rec_crt_time;
if(sqlca.sqlcode) {
DB_TRACE_CA( &sqlca ); *sql_code = sqlca.sqlcode; return -1;
}
return 0;
}
After checking, I find the field "sa_comm_data" defined error, in
database this column
is raw(40), this need the "sa_comm_data" in tbl_txn_mon_t be char[81].
But why oracle report 1801? ther are only two column with type "date", tm_rec_updt_time and tm_rec_crt_time.
And more, in the first 3 or 4 fetching, there is no error, after that, 1801 is the most.
And in AIX5.2.0.7 there is no error, oracle version is 9.2.0.7. In sco unix 7.1.3 , 1801 are reported, oracle version is 8.1.7.0.0. Received on Thu Jul 03 2008 - 10:46:15 CDT