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:02:36 -0000

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





Archive powered by MHonArc 2.6.24.

Top of Page