@@ -1422,7 +1422,7 @@ int ODBConn::ExecDirectSQL(char *sql, ODBCCOL *tocols)
1422
1422
PGLOBAL& g = m_G;
1423
1423
void *buffer;
1424
1424
bool b;
1425
- UWORD n;
1425
+ UWORD n, k ;
1426
1426
SWORD len, tp, ncol = 0 ;
1427
1427
ODBCCOL *colp;
1428
1428
RETCODE rc;
@@ -1489,15 +1489,16 @@ int ODBConn::ExecDirectSQL(char *sql, ODBCCOL *tocols)
1489
1489
} else {
1490
1490
do {
1491
1491
rc = SQLExecDirect (hstmt, (PUCHAR)sql, SQL_NTS);
1492
- } while (rc == SQL_STILL_EXECUTING);
1492
+ } while (rc == SQL_STILL_EXECUTING);
1493
1493
1494
1494
if (!Check (rc))
1495
1495
ThrowDBX (rc, " SQLExecDirect" , hstmt);
1496
1496
1497
1497
do {
1498
1498
rc = SQLNumResultCols (hstmt, &ncol);
1499
- } while (rc == SQL_STILL_EXECUTING);
1499
+ } while (rc == SQL_STILL_EXECUTING);
1500
1500
1501
+ k = 0 ; // used for column number
1501
1502
} // endif Srcdef
1502
1503
1503
1504
for (n = 0 , colp = tocols; colp; colp = (PODBCCOL)colp->GetNext ())
@@ -1519,18 +1520,23 @@ int ODBConn::ExecDirectSQL(char *sql, ODBCCOL *tocols)
1519
1520
sprintf (m_G->Message , MSG (INV_COLUMN_TYPE),
1520
1521
colp->GetResultType (), SVP (colp->GetName ()));
1521
1522
ThrowDBX (m_G->Message );
1522
- } // endif tp
1523
+ } // endif tp
1524
+
1525
+ if (m_Tdb->Srcdef )
1526
+ k = colp->GetIndex ();
1527
+ else
1528
+ k++;
1523
1529
1524
1530
if (trace (1 ))
1525
1531
htrc (" Binding col=%u type=%d buf=%p len=%d slen=%p\n " ,
1526
- n , tp, buffer, len, colp->GetStrLen ());
1532
+ k , tp, buffer, len, colp->GetStrLen ());
1527
1533
1528
- rc = SQLBindCol (hstmt, colp-> GetIndex () , tp, buffer, len, colp->GetStrLen ());
1534
+ rc = SQLBindCol (hstmt, k , tp, buffer, len, colp->GetStrLen ());
1529
1535
1530
1536
if (!Check (rc))
1531
1537
ThrowDBX (rc, " SQLBindCol" , hstmt);
1532
1538
1533
- } // endif pcol
1539
+ } // endif colp
1534
1540
1535
1541
} catch (DBX *x) {
1536
1542
if (trace (1 ))
0 commit comments