Skip to Content.
Sympa Menu

freetds - RE: [freetds] RE: FreeTDS Digest, Vol 11, Issue 14

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: "Thompson, Bill D (London)" <bill_d_thompson AT ml.com>
  • To: "'FreeTDS Development Group'" <freetds AT lists.ibiblio.org>
  • Subject: RE: [freetds] RE: FreeTDS Digest, Vol 11, Issue 14
  • Date: Thu, 4 Dec 2003 16:04:08 -0000

...well replace it with a "break" anyway.... :-)

> -----Original Message-----
> From: Thompson, Bill D (London)
> Sent: 04 December 2003 16:03
> To: 'FreeTDS Development Group'
> Subject: RE: [freetds] RE: FreeTDS Digest, Vol 11, Issue 14
>
> Hey david,
>
> Its this "return" that's doing you in.
>
> Rows->CurrentRow = 0; // Rows is just a class that
> uses a
> 2D STL vector to
> RowCount = Rows->Rows.size(); // store rows results
> > return;
>
> remove that, and all will be well, I reckon....
>
> Bill
>
>
> > -----Original Message-----
> > From: David Nsengiyumva [SMTP:davidn AT finsolutions.co.za]
> > Sent: 04 December 2003 16:03
> > To: freetds AT lists.ibiblio.org
> > Subject: [freetds] RE: FreeTDS Digest, Vol 11, Issue 14
> >
> > Hi Bill
> >
> > My Loop looks like this
> >
> > void FTDSQuery::GetResults(void)
> > {
> > CS_RETCODE ret;
> > CS_RETCODE results_ret;
> > CS_INT result_type;
> > CS_INT count;
> >
> > while ((results_ret = ct_results(cmd, &result_type)) == CS_SUCCEED) {
> > switch ((int) result_type) {
> > case CS_CMD_SUCCEED:
> > //GetRowCount();
> > break;
> > case CS_CMD_DONE:
> > //GetRowCount();
> > break;
> > case CS_CMD_FAIL:
> > throw Exception("FTDSQuery: ct_results() failed.");
> > case CS_ROW_RESULT:
> > if(ct_res_info(cmd, CS_NUMDATA, &FieldCount,
> > CS_UNUSED, NULL) !=
> > CS_SUCCEED)
> > throw FTDSException("ct_res_info() failed");
> >
> > Rows->Clear();
> > do
> > {
> > AddRow();
> > ret = ct_fetch(cmd, CS_UNUSED, CS_UNUSED, CS_UNUSED,
> > &count);
> > }
> > while((ret == CS_SUCCEED));
> >
> > switch ((int) ret) {
> > case CS_END_DATA:
> > break;
> > case CS_ROW_FAIL:
> > throw Exception("ct_fetch() returned CS_ROW_FAIL.");
> > case CS_FAIL:
> > throw Exception("ct_fetch() returned CS_FAIL.");
> > default:
> > throw Exception("ct_fetch() unexpected return.");
> > } // switch
> >
> > Rows->CurrentRow = 0; // Rows is just a class that
> > uses a 2D STL vector to
> > RowCount = Rows->Rows.size(); // store rows results
> > return;
> > case CS_COMPUTE_RESULT:
> > throw Exception("ct_results() unexpected
> > CS_COMPUTE_RESULT.");
> > case CS_SUCCEED:
> > throw Exception("ct_results() unexpected
> > CS_COMPUTE_RESULT.");
> > default:
> > throw Exception("ct_results() expected result_type.
> > Just testing");
> > } // switch
> > } // while
> >
> > switch ((int) results_ret) {
> > case CS_END_RESULTS:
> > break;
> > case CS_FAIL:
> > throw Exception("ct_results() failed.");
> > default:
> > throw Exception("ct_results() unexpected return.");
> > } // switch
> > }
> >
> > >>Hey david,
> > >>
> > >>your problem is that you haven't fully processed the result set from
> > your
> > >>previous command that is accessing sysobjects, syscolumns etc.
> > >>
> > >>
> > >>You are doing a ct_results() and then a ct_fetch(), but you haven't
> > fully
> > >>processed the result set before issuing your "exec stored proc"
> command.
> > >>You need to call ct_results in a loop until it returns CS_END_RESULTS
> > >>
> > >>see <freetds>/src/ctlib/unittests/t0002.c for an example of a
> ct_results
> > >>loop.
> > >>
> > >>The CS_RECOMPILE options will force the stored procedure to be
> > recompiled
> > >>before executing.
> > >>
> > >>Bill
> >
> >
> > _______________________________________________
> > FreeTDS mailing list
> > FreeTDS AT lists.ibiblio.org
> > http://lists.ibiblio.org/mailman/listinfo/freetds
>
> _______________________________________________
> FreeTDS mailing list
> FreeTDS AT lists.ibiblio.org
> http://lists.ibiblio.org/mailman/listinfo/freetds





Archive powered by MHonArc 2.6.24.

Top of Page