Just a thought. Can you try changing the fetchrow_arrayref to a fetchrow() returning an array (and send me the logs)? Please also set tracing to 9. Unfortunately, I don't have a SQL server of any flavor running any more. I need to set one up again...
Thanks, Jeff > -----Original Message----- > From: Abi Pothen [mailto:[EMAIL PROTECTED]] > Sent: Tuesday, January 29, 2002 3:49 PM > To: [EMAIL PROTECTED]; [EMAIL PROTECTED] > Cc: [EMAIL PROTECTED]; [EMAIL PROTECTED] > Subject: RE: Multiple Results in DBD::ODBC 0.31 > > > Jeff, > Thank you for the reply. I am attaching herewith 3 files. > output.err, output.txt, program.pl > Thanks, > Abi. > > > output.err > ========== > DBI 1.20-nothread dispatch trace level set to 4 > Note: perl is running without the recommended perl -w option > -> > DBI->connect(dbi:ODBC:DSN=TESTDB;Database=xxxxx;uid=usrxxxxx;pwd=xxxxx, , > ****, HASH(0x14b6d8)) > -> DBI->install_driver(ODBC) for solaris perl=5.00404 pid=29412 > ruid=1007 euid=1007 > install_driver: DBD::ODBC version 0.31 loaded from > blib/lib/DBD/ODBC.pm > New DBI::dr (for DBD::ODBC::dr, parent=, id=) > dbih_setup_handle(DBI::dr=HASH(0x17b194)=>DBI::dr=HASH(0x1d1594), > DBD::ODBC::dr, 0, Null!) > dbih_make_com(Null!, DBD::ODBC::dr, 92) > <- install_driver= DBI::dr=HASH(0x17b194) > -> default_user in DBD::_::dr for DBD::ODBC::dr > (DBI::dr=HASH(0x17b194)~0x1d1594 undef undef HASH(0x14b690)) > <- default_user= ( undef undef ) [2 items] at DBI.pm line 422 > -> connect for DBD::ODBC::dr (DBI::dr=HASH(0x17b194)~0x1d1594 > 'DSN=TESTDB;Database=xxxxx;uid=usrxxxxx;pwd=xxxxx' undef **** > HASH(0x14b690)) > New DBI::db (for DBD::ODBC::db, parent=DBI::dr=HASH(0x1d1594), id=) > dbih_setup_handle(DBI::db=HASH(0x1d14f8)=>DBI::db=HASH(0x1d1480), > DBD::ODBC::db, 172fa4, Null!) > dbih_make_com(DBI::dr=HASH(0x1d1594), DBD::ODBC::db, 116) > Driver connect 'DSN=TESTDB;Database=xxxxx;uid=usrxxxxx;pwd=xxxxx', '', '' > <- connect= DBI::db=HASH(0x1d14f8) at DBI.pm line 425 > -> STORE for DBD::ODBC::db (DBI::db=HASH(0x1d1480)~INNER > 'RaiseError' 1) > STORE DBI::db=HASH(0x1d1480) 'RaiseError' => 1 > <- STORE= 1 at DBI.pm line 450 > -> STORE for DBD::ODBC::db (DBI::db=HASH(0x1d1480)~INNER > 'PrintError' 1) > STORE DBI::db=HASH(0x1d1480) 'PrintError' => 1 > <- STORE= 1 at DBI.pm line 450 > -> STORE for DBD::ODBC::db (DBI::db=HASH(0x1d1480)~INNER > 'AutoCommit' 1) > <- STORE= 1 at DBI.pm line 450 > <- connect= DBI::db=HASH(0x1d14f8) > -> prepare for DBD::ODBC::db (DBI::db=HASH(0x1d14f8)~0x1d1480 'select > emp_id, emp_name, address1, address2 from employee where emp_id = 2 > select emp_id from employee where emp_id = 2') > New DBI::st (for DBD::ODBC::st, parent=DBI::db=HASH(0x1d1480), id=) > dbih_setup_handle(DBI::st=HASH(0x1d1504)=>DBI::st=HASH(0x14b6cc), > DBD::ODBC::st, 1d1510, Null!) > dbih_make_com(DBI::db=HASH(0x1d1480), DBD::ODBC::st, 196) > dbd_st_prepare'd sql f1913992 > select emp_id, emp_name, address1, address2 from employee > where emp_id = 2 > select emp_id from employee where emp_id = 2 > <- prepare= ( DBI::st=HASH(0x1d1504) ) [1 items] at x.pl line 15 > -> execute for DBD::ODBC::st (DBI::st=HASH(0x1d1504)~0x14b6cc) > dbd_st_execute (outparams = 0)... > dbd_st_execute (for hstmt 1913992 before)... > dbd_describe sql 1913992: num_fields=4 > col 1: INTEGER len= 4 disp= 12, prec= 10 scale=0 > col 2: VARCHAR len= 36 disp= 36, prec= 35 scale=0 > col 3: VARCHAR len= 36 disp= 36, prec= 35 scale=0 > col 4: VARCHAR len= 36 disp= 36, prec= 35 scale=0 > col 1: 'emp_id' sqltype=INTEGER, ctype=SQL_C_CHAR, maxlen=12 > col 2: 'emp_name' sqltype=VARCHAR, ctype=SQL_C_CHAR, maxlen=36 > col 3: 'address1' sqltype=VARCHAR, ctype=SQL_C_CHAR, maxlen=36 > col 4: 'address2' sqltype=VARCHAR, ctype=SQL_C_CHAR, maxlen=36 > <- execute= -1 at x.pl line 16 > -> errstr in DBD::_::common for DBD::ODBC::st > (DBI::st=HASH(0x1d1504)~0x14b6cc) > <- errstr= undef at x.pl line 17 > -> fetchrow_arrayref for DBD::ODBC::st > (DBI::st=HASH(0x1d1504)~0x14b6cc) > SQLFetch rc 0 > dbih_setup_fbav for 4 fields => 0x1d151c > fetch num_fields=4 > fetch col#0 emp_id datalen=1 displ=12 > fetch col#1 emp_name datalen=13 displ=36 > fetch col#2 address1 datalen=11 displ=36 > fetch col#3 address2 datalen=13 displ=36 > <- fetchrow_arrayref= [ '2' 'Albert Ringer' 'New & Brews' '577 First > St.' ] row1 at x.pl line 22 > -> fetchrow_arrayref for DBD::ODBC::st > (DBI::st=HASH(0x1d1504)~0x14b6cc) > SQLFetch rc 100 > SQLGetFunctions - supported: 1 > dbd_describe sql 1913992: num_fields=1 > col 1: INTEGER len= 4 disp= 12, prec= 10 scale=0 > col 1: 'emp_id' sqltype=INTEGER, ctype=SQL_C_CHAR, maxlen=12 > <- fetchrow_arrayref= undef row1 at x.pl line 23 > -> FETCH for DBD::ODBC::st (DBI::st=HASH(0x14b6cc)~INNER > 'odbc_more_results') > <- FETCH= 1 at x.pl line 22 > -> fetchrow_arrayref for DBD::ODBC::st > (DBI::st=HASH(0x1d1504)~0x14b6cc) > SQLFetch rc -1 > dbd_error: err_rc=-1 rc=0 s/d/e: 1913992/1912968/1385480 > dbd_error: SQL-S1002 (native 0): [OpenLink][ODBC][Driver]Invalid column > number (SQL-S1002) > dbd_error: err_rc=-1 rc=0 s/d/e: 0/1912968/1385480 > dbd_error: err_rc=-1 rc=0 s/d/e: 0/0/1385480 > ERROR EVENT -1 '[OpenLink][ODBC][Driver]Invalid column number > (SQL-S1002)(DBD: st_fetch/SQLFetch err=-1)' on DBI::st=HASH(0x14b6cc) > st_fetch/SQLFetch error -1 recorded: > [OpenLink][ODBC][Driver]Invalid column > number (SQL-S1002)(DBD: st_fetch/SQLFetch err=-1) > !! ERROR: -1 '[OpenLink][ODBC][Driver]Invalid column number > (SQL-S1002)(DBD: st_fetch/SQLFetch err=-1)' > <- fetchrow_arrayref= undef row1 at x.pl line 22 > DBD::ODBC::st fetchrow_arrayref failed: [OpenLink][ODBC][Driver]Invalid > column number (SQL-S1002)(DBD: st_fetch/SQLFetch err=-1) at x.pl line 22. > DBD::ODBC::st fetchrow_arrayref failed: [OpenLink][ODBC][Driver]Invalid > column number (SQL-S1002)(DBD: st_fetch/SQLFetch err=-1) at x.pl line 22. > <> DESTROY ignored for outer handle DBI::st=HASH(0x1d1504) (inner > DBI::st=HASH(0x14b6cc)) > -> DESTROY for DBD::ODBC::st (DBI::st=HASH(0x14b6cc)~INNER) > <- DESTROY= undef > dbih_clearcom 0x1d1504 (com 0x1d9008, type 3) done. > > <> DESTROY ignored for outer handle DBI::db=HASH(0x1d14f8) (inner > DBI::db=HASH(0x1d1480)) > -> DESTROY for DBD::ODBC::db (DBI::db=HASH(0x1d1480)~INNER) > <- DESTROY= undef > dbih_clearcom 0x1d14f8 (com 0x1d2788, type 2) done. > > -- DBI::END > -> disconnect_all for DBD::ODBC::dr (DBI::dr=HASH(0x17b194)~0x1d1594) > <- disconnect_all= '' at DBI.pm line 467 > -> DESTROY in DBD::_::common for DBD::ODBC::dr > (DBI::dr=HASH(0x1d1594)~INNER) > <- DESTROY= undef during global destruction > dbih_clearcom 0x17b194 (com 0x182d08, type 1) done. > > <> DESTROY for DBI::dr=HASH(0x17b194) ignored (inner handle gone) > > > >From: "Jeff Urlwin" <[EMAIL PROTECTED]> > >To: "Abi Pothen" <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]> > >CC: <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]> > >Subject: RE: Multiple Results in DBD::ODBC 0.31 > >Date: Tue, 29 Jan 2002 03:21:03 -0500 > > > >Can you please turn on tracing and send me the trace file for the > >statement(s) that fail? > > > >Thanks, > > > >Jeff > > > > > -----Original Message----- > > > From: Abi Pothen [mailto:[EMAIL PROTECTED]] > > > Sent: Monday, January 28, 2002 8:02 PM > > > To: [EMAIL PROTECTED] > > > Cc: [EMAIL PROTECTED]; [EMAIL PROTECTED] > > > Subject: Multiple Results in DBD::ODBC 0.31 > > > > > > > > > Hi, > > > I am having a problem with DBD::ODBC (version 0.31) that > has fixes to > > > handle multiple result set. This fix is working fine only when > > > the number of > > > columns of the previous result set is equal to or greater than > > > the number of > > > columns of the following result set. If the number of columns of > > > the result > > > set of the previous result set is greater than the following, SQLFetch > > > function call is failing and returning -1. > > > > > > Error message is: > > > DBD::ODBC::st fetchrow_arrayref failed: > [OpenLink][ODBC][Driver]Invalid > > > column number (SQL-S1002)(DBD: st_fetch/SQLFetch err=-1) > > > > > > Can somebody please suggest a solution for this problem ? > > > > > > Your help will be greatly appreciated. > > > > > > Sample sql statements used: > > > > > > > > > a. "select emp_name, address1, address2 from employee where > > > emp_id = 2 " > > > select emp_id from employee where emp_id = 2" > -- Failing > > > with message ( SQLFetch = -1 ) > > > > > > > > > b. " select emp_id from employee where emp_id = 2 > > > select emp_name, address1, address2 from employee where > > > emp_id = > > > 2" -- Executes succefully > > > > > > > > > > > > > > > > > > _________________________________________________________________ > > > Join the world�s largest e-mail service with MSN Hotmail. > > > http://www.hotmail.com > > > > > > > > > > > _________________________________________________________________ > Join the world�s largest e-mail service with MSN Hotmail. > http://www.hotmail.com >
