Thanks I will also ask on the FreeTDS mailing list. Here is a log of what happens when I execute the stored procedure. I just do a select and insert and select to so that I can insert into the database. I was not sure if it was an issue with freetds or DBD::Sybase. I should also note the procedure works it inserts the data. but throw the error. It segs with trace->(3). Also I get the same error with a $dbh->do();
Here is the trace using the typical prepare, execute, fetch method [rwilbert@bender dev]$ ./sp.pl snow NSADB "select * from test1" sa null [rwilbert@bender dev]$ ./sp.pl snow NSADB "insert into test1 (text1, text2) values (\"test\", \"1\")" sa null [rwilbert@bender dev]$ ./sp.pl snow NSADB "select * from test1" sa null test ,1 [rwilbert@bender dev]$ ./sp.pl snow NSADB "InsertMe \"test\", \"1\"" sa null ct_res_info() returned 0 columns at /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/DBD/Sybase.pm line 132. dbih_setup_fbav: invalid number of fields: 0, NUM_OF_FIELDS attribute probably not set right at /usr/lib/perl5/site_perl/5.8.0/i386- linux-thread-multi/DBD/Sybase.pm line 137. [rwilbert@bender dev]$ ./sp.pl snow NSADB "InsertMe \"test\", \"1\"" sa null 3 DBI::db=HASH(0x81a9da8) trace level set to 3 in DBI 1.32-ithread Note: perl is running without the recommended perl -w option -> do for DBD::Sybase::db (DBI::db=HASH(0x81a9e68)~0x81a9da8 'InsertMe "test", "1"') thr#804b3c0 1 -> prepare for DBD::Sybase::db (DBI::db=HASH(0x81a9da8)~INNER 'InsertMe "test", "1"' undef) thr#804b3c0 dbih_setup_handle(DBI::st=HASH(0x81aa624)=>DBI::st=HASH(0x81aa684), DBD::Sybase::st, 81aa630, Null!) dbih_make_com(DBI::db=HASH(0x81a9da8), DBD::Sybase::st, 396) thr#804b3c0 1 <- prepare= DBI::st=HASH(0x81aa624) at Sybase.pm line 131 via ./sp.pl line 60 -> execute for DBD::Sybase::st (DBI::st=HASH(0x81aa624)~0x81aa684) thr#804b3c0 syb_st_execute() -> ct_command() OK syb_st_execute() -> ct_send() OK st_next_result() -> ct_results(12) == 1 st_next_result() -> ct_results(12) == 1 st_next_result() -> ct_results(4043) == 1 ct_res_info() returns 25933 columns Segmentation fault Here is the trace of the do: [rwilbert@bender dev]$ ./sp.pl snow NSADB "InsertMe \"test\", \"1\"" sa null 3 DBI::db=HASH(0x81a97c0) trace level set to 3 in DBI 1.32-ithread Note: perl is running without the recommended perl -w option -> do for DBD::Sybase::db (DBI::db=HASH(0x81a9880)~0x81a97c0 'InsertMe "test", "1"') thr#804b3c0 1 -> prepare for DBD::Sybase::db (DBI::db=HASH(0x81a97c0)~INNER 'InsertMe "test", "1"' undef) thr#804b3c0 dbih_setup_handle(DBI::st=HASH(0x81a9940)=>DBI::st=HASH(0x81bd3b4), DBD::Sybase::st, 81a994c, Null!) dbih_make_com(DBI::db=HASH(0x81a97c0), DBD::Sybase::st, 396) thr#804b3c0 1 <- prepare= DBI::st=HASH(0x81a9940) at Sybase.pm line 131 via ./sp.pl line 60 -> execute for DBD::Sybase::st (DBI::st=HASH(0x81a9940)~0x81bd3b4) thr#804b3c0 syb_st_execute() -> ct_command() OK syb_st_execute() -> ct_send() OK st_next_result() -> ct_results(12) == 1 st_next_result() -> ct_results(12) == 1 st_next_result() -> ct_results(4043) == 1 ct_res_info() returned 0 columns at /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/DBD/Sybase.pm line 132. describe() retcode = 1 st_next_result() -> lasterr = 0, lastsev = 0 <- execute= 1074912608 at Sybase.pm line 132 via ./sp.pl line 60 -> err in DBD::_::common for DBD::Sybase::st (DBI::st=HASH(0x81a9940)~0x81bd3b4) thr#804b3c0 <- err= undef at Sybase.pm line 133 via ./sp.pl line 60 -> rows for DBD::Sybase::st (DBI::st=HASH(0x81a9940)~0x81bd3b4) thr#804b3c0 <- rows= 1074912608 at Sybase.pm line 134 via ./sp.pl line 60 -> FETCH for DBD::Sybase::st (DBI::st=HASH(0x81bd3b4)~INNER 'syb_more_results') thr#804b3c0 <- FETCH= 0 at Sybase.pm line 135 via ./sp.pl line 60 -> fetch for DBD::Sybase::st (DBI::st=HASH(0x81a9940)~0x81bd3b4) thr#804b3c0 dbih_setup_fbav: invalid number of fields: 0, NUM_OF_FIELDS attribute probably not set right at /usr/lib/perl5/site_perl/5.8.0/i386- linux-thread-multi/DBD/Sybase.pm line 137. <> DESTROY ignored for outer handle DBI::st=HASH(0x81a9940) (inner DBI::st=HASH(0x81bd3b4)) -> DESTROY for DBD::Sybase::st (DBI::st=HASH(0x81bd3b4)~INNER) thr#804b3c0 syb_st_finish() -> ct_cancel(CS_CANCEL_ALL) syb_st_finish() -> resetting ACTIVE, moreResults, dyn_execed syb_st_destroy: called on 81bd890... syb_st_destroy(): freeing imp_sth->statement syb_st_destroy(): cmd dropped: 1 <- DESTROY= undef -> DESTROY for DBD::Sybase::db (DBI::db=HASH(0x81a97c0)~INNER) thr#804b3c0 syb_db_disconnect() -> ct_close() <- DESTROY= undef Here is the script that I am using: #!/usr/bin/perl use DBI; sub usage(){ print<<EOF; $0: Machine_Name DBName "SQL Statement" The SQL Statement must be quoted . example: $0 server database "select * from dbo.syscolumns" [username] [password] [trace_level] EOF exit 1 } if (@ARGV <= 2){ usage(); } ### define the the required vars my $sv = shift; my $db = shift; my $qs = shift; ### set up our optional username and password my $user = shift || "username"; my $passwd = shift || "password" ; if ($passwd =~ /null/ ){ undef $passwd; } my $trace = shift; ## connect to the database my $dbh = DBI->connect("DBI:Sybase:server=$sv;port=1433:database=$db", $user, $passwd)||die $!; if ( $trace ne '' ) { $dbh->trace($trace); } #different $dbi call for inserts or updates if ($qs =~ /^insert|^update|^delete/i){ $dbh->do ($qs) || die "$dbh->errstr"; }else{ ### deals with selects my $sth = $dbh->prepare($qs)|| die "$dbh->errstr"; # $dbh->do ($qs) || die "$dbh->errstr"; $sth ->execute() || die "$dbh->errstr"; while (my @tmp = $sth->fetchrow_array()){ print join ",", @tmp; print "\n"; } } ## disconnects from server $dbh ->disconnect; Here is the stored procedure: CREATE PROCEDURE InsertMe @Text1 AS char(10), @Text2 AS char(10) AS INSERT INTO test1 ( text1, text2 ) VALUES ( @Text1, @Text2 ); RETURN 0 GO -----Original Message----- From: Michael Peppler [mailto:[EMAIL PROTECTED]] Sent: Friday, December 20, 2002 11:06 AM To: [EMAIL PROTECTED] Subject: Re: Stored Procedures with DBD::Sybase and FreeTDS On Thu, 2002-12-19 at 13:35, [EMAIL PROTECTED] wrote: > Has anyone had a problem calling to a stored procedure that performs an > insert and returns no data ? > > I am currently having that and the error that I am getting is: > dbih_setup_fbav: invalid number of fields: 0, NUM_OF_FIELDS attribute > probably not set right at > /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/DBD/Sybase.pm line > 445. > > The sql statement works from the MSSql client and if I call a stored > procedure that returns data it works. Try asking on the FreeTDS list. Alternatively send me (but not the list) a trace (DBI->trace(3)) from running your script. Thanks Michael -- Michael Peppler Data Migrations, Inc. [EMAIL PROTECTED] http://www.mbay.net/~mpeppler Sybase T-SQL/OpenClient/OpenServer/C/Perl developer available for short or long term contract positions - http://www.mbay.net/~mpeppler/resume.html