On 12 Nov 2002 16:33:47 -0800 Dana Lucent <[EMAIL PROTECTED]> wrote: > Presented here for the first time, is the aforementioned script: >
# "#!/usr/bin/perl -w" and "use strict;" add very important error checking > my $source = "SFO400P1"; > my $dbh=DBI->connect("dbi:DB2:$source") or die; # I'd add $DBI::errstr to the die() or you'll never know why it died # Since you are using placeholders *(very good idea)*, you can prepare() # the statements outside the loop and then execute them inside the loop # for each value read. > # Prepare statement for execution > while(<MPACT>) { > @mpactvals = parse_csv; > $testnum = pop(@mpactvals); # Make sure parse_csv is using $_ and removes end of line characters > $sth = $dbh->prepare("SELECT custnumber FROM PCADDTAQUA.party > WHERE custnumber = ?"); # Either add $dbh->{RaiseError}=1; before the loop or add explicit # error checking to each statement. Include $DBI::errstr to tell # you what the error is. # Error checking for connect(), prepare(), execute(), and fetch*() # are the most critical. # E.g.: # $sth = $dbh -> prepare( ... ) or die "Prepare 1 failed, $DBI::errstr"; # $sth -> execute( $testnum ) or die "Execute 1 failed, $DBI::errstr"; > $sth->bind_param(1, \$testnum,{TYPE=>SQL_VARCHAR}); # RTFM. The second argument to bind_param() is a value, not a reference. # How to read the fine manual: http://trantor.jsbsystems.com/DBI-FAQ/60.html > $dbh->err; # RTFM. $dbh->err is the value of the most recent error code. # It is not an error checking statement. > $sth->execute() or die "execute got error"; > $dbh->err; > > $sth1 = $dbh->prepare("SELECT custnumber FROM PCADDTAQUA.party > WHERE custnumber = ?"); > $sth1->bind_param(1, \$testnum, {TYPE=>SQL_VARCHAR}); > $dbh->err; > $sth1->execute() or die "execute got error" . > $dbh->err; > > my @row = $sth->fetchrow_array; > my @row1 = $sth1->fetchrow_array; # You are selecting exactly the same column using the same # parameters twice. > > if > ($sth[$CUSTNUMBER] eq $sth1[$CUSTNUMBER]) # ??? You haven't defined @sth or @sth1 > print OUTPUTFILE "***SUCCESS! $testnum"; > } > else > { > print OUTPUTFILE "***SUCCESS $testnum"; > } > > } > > ####################### LEAVE THIS SECTION UNCOMMENTED ################ > $stmt = ''; > $stmt1 = ""; > $rc = $dbh->disconnect(); > foreach $key (keys %secs) > { > $stoptime = localtime(time() - $secs{$key}); > } > my $runtime = (($stoptime - $starttime)); > > print OUTPUTFILE "$starttime\n"; > print OUTPUTFILE "$stoptime\n"; > print OUTPUTFILE "$runtime\n"; > > close(MPACT); > close( OUTPUTFILE ); > exit; > > If all code after the statement "$testnum = pop(@mpactvals);" is > commented out (except the print statement "print OUTPUTFILE "***SUCCESS > $testnum"", the output file contains all values to be processed. > However, as it is at this point, I continue to receive a bind_param > error. That's understandable since you are calling bind_param with invalid arguments. -- Mac :}) ** I normally forward private questions to the appropriate mail list. ** Ask Smarter: http://www.tuxedo.org/~esr/faqs/smart-questions.html Give a hobbit a fish and he eats fish for a day. Give a hobbit a ring and he eats fish for an age.