I am trying to execute a query on a db2 database using the dbi module. I'm wondering if someone can take a look at my code and tell me what I'm doing wrong. I'm assuming it's a problem with my query, but my query works fine in access, so I don't know. I guess I don't really understand how queries work differently in db2. I typically connect to a sql database.
Here is the error I'm getting:
Couldn't execute query: [IBM][CLI Driver][DB2] SQL0204N "(my userid here).ADXSPIT_S PI_MASTER" is an undefined name. SQLSTATE=42704
(SQL-S0002)(DBD: st_execute/SQLExecute err=-1)
My database name is DDXSPI1D, residing on server DB239. ADXSPIT.ADXSPIT _SPI_MASTER is the table name.
Here is my code:
#!/usr/bin/perl
# Include necessary modules
use CGI;
use CGI::Carp ("fatalsToBrows er");
use IO::File;
use DBI;
# create our CGI
$query = new CGI;
print "Content-Type: text/html\n\n";
print $query->start_html(-title=>"SLA DB2 TEST",);
#Include config and database info
require("../config/slaconfig.txt") ;
# Get SLA that is passed into this page
$ProjectNum=$qu ery->param('Project Num');
# If the ProjectNum is undefined, just print out
# the form to search for a ProjectNum
if ($ProjectNum == undef)
{
print<<EOM;
<body>
<center>
<h1>SLA DB2 Project Test</h1>
<form name="GetProj" method="post" action="../../cgi-bin/lrrform_DB2.pl" >
Please enter a Project Number: <input type="text" size="10" name="ProjectNu m">
<p><input type="submit" value="Submit"> <input type="reset" value="Clear Form">
</p>
</form>
</center>
</body>
</html>
EOM
}
else
{
# Connect to the database
$dbh = DBI->connect("dbi:O DBC:DB239", $PROJUSER, $PROJPassword)
or die "Couldn't connect to database: $DBI::errstr\n" ;
$DB2Query="SELE CT ADXSPIT.PROJECT _NUM, ADXSPIT.PROJECT _NAME, ADXSPIT.PROJECT _DESC FROM ADXSPIT.ADXSPIT _SPI_MASTER where
ADXSPIT.PROJECT _NUM=$ProjectNu m;";
#query database
$dbquery=$dbh->prepare($DB2Qu ery) ||
die "Prepare failed: $DBI::errstr\n" ;
$dbquery->execute() ||
die "Couldn't execute query: $DBI::errstr\n" ;
$ProjInfo=$dbqu ery->fetchrow_array ;
$dbquery->finish();
#print results
print <<EOM;
<body>
<center>
<h1>SLA DB2 Project Test RESULTS</h1>
This is cool!
</p>
</form>
</center>
</body>
</html>
EOM
print $ProjInfo;
}
Here is the error I'm getting:
Couldn't execute query: [IBM][CLI Driver][DB2] SQL0204N "(my userid here).ADXSPIT_S PI_MASTER" is an undefined name. SQLSTATE=42704
(SQL-S0002)(DBD: st_execute/SQLExecute err=-1)
My database name is DDXSPI1D, residing on server DB239. ADXSPIT.ADXSPIT _SPI_MASTER is the table name.
Here is my code:
#!/usr/bin/perl
# Include necessary modules
use CGI;
use CGI::Carp ("fatalsToBrows er");
use IO::File;
use DBI;
# create our CGI
$query = new CGI;
print "Content-Type: text/html\n\n";
print $query->start_html(-title=>"SLA DB2 TEST",);
#Include config and database info
require("../config/slaconfig.txt") ;
# Get SLA that is passed into this page
$ProjectNum=$qu ery->param('Project Num');
# If the ProjectNum is undefined, just print out
# the form to search for a ProjectNum
if ($ProjectNum == undef)
{
print<<EOM;
<body>
<center>
<h1>SLA DB2 Project Test</h1>
<form name="GetProj" method="post" action="../../cgi-bin/lrrform_DB2.pl" >
Please enter a Project Number: <input type="text" size="10" name="ProjectNu m">
<p><input type="submit" value="Submit"> <input type="reset" value="Clear Form">
</p>
</form>
</center>
</body>
</html>
EOM
}
else
{
# Connect to the database
$dbh = DBI->connect("dbi:O DBC:DB239", $PROJUSER, $PROJPassword)
or die "Couldn't connect to database: $DBI::errstr\n" ;
$DB2Query="SELE CT ADXSPIT.PROJECT _NUM, ADXSPIT.PROJECT _NAME, ADXSPIT.PROJECT _DESC FROM ADXSPIT.ADXSPIT _SPI_MASTER where
ADXSPIT.PROJECT _NUM=$ProjectNu m;";
#query database
$dbquery=$dbh->prepare($DB2Qu ery) ||
die "Prepare failed: $DBI::errstr\n" ;
$dbquery->execute() ||
die "Couldn't execute query: $DBI::errstr\n" ;
$ProjInfo=$dbqu ery->fetchrow_array ;
$dbquery->finish();
#print results
print <<EOM;
<body>
<center>
<h1>SLA DB2 Project Test RESULTS</h1>
This is cool!
</p>
</form>
</center>
</body>
</html>
EOM
print $ProjInfo;
}