Thank you for responding and offering help.
here's the code that doesn't work (in all of its ugliness.)
and that is followed by what I think is just a cleaner version that DOES work???
I don't know why (could it be the SWITCH or the way I get the arguments to the subroutine???
use Switch;
use DBI;
sub rec_exists;
my (@retRows, @row, @tmp, $retRecs);
while ($line = <>) {
chomp($line);
if ($line eq "q") { goto Exit; }
else {
$retRecs = rec_exists($line,\@retRows);
}
$tmp = @retRows[0];
@row = @$tmp;
($nKey, $fN, $lN, $bN, $hN, $mN) = @row;
print "$nKey,$fN, $lN, $bN, $hN, $mN\n";
}
Exit:
exit();
sub rec_exists {
my ($searchType,$searchParm,$retArrayRef) = split(/,/,@_[0]);
my $dbh = DBI->connect("DBI:mysql:database=aaaaas;host=localhost",
+"bbbbbb","cccccccccc",{'RaiseError' => 1});
my ($found, @row, @rows, $nKey, $sth);
$rowRef;
@rows = ();
switch($searchType) {
case "1" {
# search using the nKey
$nKey = $searchParm;
chomp($nKey);
$nKey =~ s/^\s+//;
$nKey =~ s/\s+$//;
$sth = $dbh->prepare("Select * from sContacts where nKey like
+ '$nKey%'");
$sth->execute();
$found = 0;
while ( $rowRef = $sth->fetchrow_arrayref ){
$retArrayRef->[$found] = [ @$rowRef ];
$found++;
}
}
}
$sth->finish;
$dbh->disconnect;
return $found;
}
======================
Now here's the stuff that does work
use Switch;
use DBI;
my (@retRows,$retRecs, $searchKey);
$searchKey = 'marcC';
$retRecs = test_exists($searchKey,\@retRows);
print "returned $retRecs\n";
$tmp = @retRows[0];
print "@$tmp\n";
exit();
sub test_exists {
my ($searchKey, $retRowsRef) = @_;
my ($retArrayRef, $found);
my $dbh = DBI->connect("DBI:mysql:database=aaaaa;host=localhost","
+bbbbbb","ccccccccc",{'RaiseError' => 1});
my $sth = $dbh->prepare("Select * from sContacts where nKey like
+'$searchKey%'");
$sth->execute();
$found = 0;
while ( $retArrayRef = $sth->fetchrow_arrayref ){
$retRowsRef->[$found] = [ @$retArrayRef ];
$found++;
}
$sth->finish;
$dbh->disconnect;
return $found;
}
|