Too many output parameters?
"Erik Wendelboe" <[email protected]>
| Newsgroups | gmane.comp.lang.perl.modules.dbi.sybase |
|---|---|
| Message-ID | <20050921170383.SM01764@paulpc> |
Greetings, I am new to this list, and fairly new to Perl/Sybase development. I am maintaining an inherited program that worked like a champ, until we upgraded (long overdue) our Perl version from 5.005_03 to 5.8.3, and reinstalled the Sybase DBI/DBD (DBI version is 1.48, and DBD version is 1.04). We are running on HP-UX 11.11, and are using Sybase 12.5. While debugging, I found that most stored procedure calls worked just fine, only one had a problem, resulting in a Memory Fault, and coredump :-( I found that the stored procedure that caused the coredump returned 8 output parameters. After poking around some, I found that by reducing the output parameters to 5, everything worked perfectly. I cowardly re-wrote the stored procedure into 2 different sprocs, each returning 5 output parameters, calling one right after the other. It works fine, but I did it just to keep the project going, it makes me nervous that I don't know why it is working/not working. Any pointers and/or help is appreciated. Regards, Erik Wendelboe [email protected] Here is the code that calls the original stored procedure (I know I don't test for the result type before I move it, I put in a check for that, but it didn't make any difference. I just wanted to show the original code, before I 'mangled' it too much.): sub GetCommandLine{ my($scope, $area, $temp_file) = @_; my($tmp1, $tmp2, $key); my(%command_array); my($file_name, $file_date, $file_counter) = GetFileDateCounter($temp_file); my($sql) = "declare \@script varchar(80), \@options varchar(80), \@arg1 varchar(40)\n, \@arg2 varchar(40), \@arg3 varchar(40), \@arg4 varchar(40), \@arg5 varchar(40)\n, \@arg6 varchar(40)\n exec sp_get_commandline_30 '$scope', '$area', '$file_name', \@script output, \@options output, \@arg1 output, \@arg2 output, \@arg3 output, \@arg4 output, \@arg5 output, \@arg6 output\n"; my($data); $sql = $DBH->prepare("$sql"); $sql->execute(); do { while($data = $sql->fetch) { { $command_array{"script"} = $data->[0]; $command_array{"options"} = $data->[1]; $command_array{"arg1"} = $data->[2]; $command_array{"arg2"} = $data->[3]; $command_array{"arg3"} = $data->[4]; $command_array{"arg4"} = $data->[5]; $command_array{"arg5"} = $data->[6]; $command_array{"arg6"} = $data->[7]; } } } while ($sql->{syb_more_results});