http://qs321.pair.com?node_id=309519


in reply to Table creation

Well, you have

$dbh->disconnect();

before the second sql statement, so you are no longer connected to the database when you try to create the second table.

Replies are listed 'Best First'.
Re: Re: Table creation
by Win (Novice) on Nov 24, 2003 at 13:33 UTC
    I tried removing that before and it gave me the error message:
    Can't call method "do" on an undefined value at ....
      my $dbh->do(...) Aha... You didn't open your database handle, did you? ;-)

      You have to make sure there is a database connection before issuing SQL commands. If you do not call DBI->connect, your database handle will be undefined. In your case, you have created a new lexical with my $dbh in your second part of the code, which will be undefined unless you call the connect, or use the existing handle by dropping that my in front of $dbh->do(...) (assuming that you have dropped that first $dbh->disconnect of course). Here's an example on how to connect to the database using DBI and DBD.
      #!/usr/bin/perl -w use strict; use DBI; use DBD::Sybase; my $dbh = DBI->connect("dbi:Sybase:server=XXXX;database=XXXX", "USER", +"PASSWD") or die "Failed to connect to the database!"; my $sth = $dbh->prepare( qq{ SQL statement } ); $sth->execute(); my @column_headings = @{$sth->{NAME}}; while (my @row = $sth->fetchrow()) { # Data elements $row[0] ... $row[-1] ... } $sth->finish; $dbh->disconnect;