HitMan has asked for the wisdom of the Perl Monks concerning the following question:

Actually get_db_name() is a subroutine .Sorry I didn't include the subroutine. Here is the connect string;
### Our DBI parameters are: $dsn="dbi:Sybase:server=$DB_SERVER"; ### Connect DB $dbh = DBI->connect ($dsn, $DB_USER, $DB_PWD) ;
here is the complete code :
sub process_database { for ($i=0;$i<$#databases+1;$i++) { $database = $databases[$i] ; ### Use DB $dbh->do("USE $database") || log_message ("SERI","Database error $ +dbh->errstr") ; get_db_name(); ## output here is okay ### Get details from sysobjects $sql = ""; $sql = "SELECT 1 " ; $sth = $dbh->prepare($sql); $sth->execute(); get_db_name(); ## output here is master $objcount =0; while (@row = $sth->fetchrow_array) { ## might give an error as th +ere wasn't any execute statement before this ($object = $row[0]) =~ s/\s//g ; $sql = ""; $sql = "GRANT ALL ON $object TO PUBLIC" ; # $dbh->do($sql) || log_message ("SERI","Database error $dbh->er +rstr"); $objcount ++; } ## end of while get_db_name(); ## output here is okay log_message("INFO","$objcount objects affected in $database"); } ## end of for } ## end of subroutine ############################ GET DB NAME() ########################### +######### sub get_db_name { $sql_dbname = "select db_name() "; $sth = $dbh->prepare($sql_dbname); $sth->execute() || die "ERROR : Database error $sth->errstr\n" ; while (@row = $sth->fetchrow_array) { $_ = $row[0]; s/\s//g; print "IN DATABASE $_ \n"; } ## end of while }

Replies are listed 'Best First'.
Re: DBI Not Working Part 2
by MZSanford (Curate) on Aug 16, 2001 at 15:18 UTC
    see final note on node 105314
    Thus spake the Master Programmer:
    "When you have learned to snatch the error code from the trap frame, it will be time for you to leave."
    -- The Tao of Programming
      Sorry MZSanford I couldn't get your point here . Did you include any message other than the pointer to the last node. Thanx for adding the pointer , I didn't know how to link the messages and so had another subject started.If you did include any message I cannot see it.
        About the same time you were posting this portion as it's own question, i was posting a description of what appears to be the cause (with the select db_name()), so i did just provide a link, because i thought it wasteful of space to report the same answer ... no worries.