Sqlcode 100 On Fetch data in esql/c program but the rows are present
Posted in 2010
Hello. I have this problem: i've get sometimes sqlcode = 100 after fetch row, but the rows are present on db! This is my sample code: EXEC SQL BEGIN DECLARE SECTION; char statement[1000]; char bdc_stato_ddt; char bdc_user_prep[9]; char bdc_data_prep[7]; char bdc_ora_prep[7]; char bdp_cod_articolo[10]; char bdp_stato_riga; EXEC SQL END DECLARE SECTION EXEC SQL BEGIN WORK; EXEC SQL SET LOCK MODE TO WAIT; sprintf(statement, "SELECT bdc_stato_ddt, bdc_user_prep, bdc_data_prep, bdc_ora_prep FROM informix.bolcli WHERE bdc_key_soc = '%c' AND bdc_key_tipo_bol = 'V' AND bdc_key_num_bol = %d FOR UPDATE", InfoDdtArt.CodSoc, InfoDdtArt.NumDdt); debug(&sdebug, "statement %s\\n", statement); EXEC SQL PREPARE bolcli_query02 FROM :statement; EXEC SQL DECLARE curBolcli02 CURSOR FOR bolcli_query02; EXEC SQL OPEN curBolcli02; EXEC SQL FETCH curBolcli02 INTO :bdc_stato_ddt, :bdc_user_prep, :bdc_data_prep, :bdc_ora_prep; if (SQLCODE) { if (SQLCODE == 100) { .... } else { .... } EXEC SQL CLOSE curBolcli02; EXEC SQL FREE curBolcli02; EXEC SQL FREE bolcli_query02; EXEC SQL COMMIT WORK; return; } /***** follows the code which sometimes fails *****/ sprintf(statement, "SELECT NVL(bdp_stato_riga, '0') as a, bdp_cod_articolo FROM informix.bolprd WHERE bdp_key_soc = '%c' AND bdp_key_tipo_bol = 'V' AND bdp_key_num_bol = %d AND bdp_qta_vend > 0 AND ((bdp_stato_riga = '0') OR (bdp_stato_riga = '1') OR (bdp_stato_riga = '2' AND (bdp_qta_vend+NVL(bdp_qta_omagg, 0)) != NVL(bdp_qta_prep, 0))) ORDER BY a", InfoDdtArt.CodSoc, InfoDdtArt.NumDdt); debug(&sdebug, "ENDPREPSETSTATE - statement %s\\n", statement); EXEC SQL PREPARE bolprd_query02 FROM :statement; EXEC SQL DECLARE curBolprd02 CURSOR FOR bolprd_query02; EXEC SQL OPEN curBolprd02; EXEC SQL FETCH curBolprd02 INTO :bdp_stato_riga, :bdp_cod_articolo; Despite rows which match the query are present, sometimes after fetch curBolprd02 sqlcode is 100 (sqlstate is 02000) This code is run by more users, and more users can simultaneously update the bolprd table. The esql version is: IBM Informix CSDK Version 2.81, IBM Informix-ESQL Version 9.53.UC Thanks for your help.