Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Referencing bound variables

by hok_si_la (Curate)
on Feb 11, 2005 at 21:28 UTC ( #430291=perlquestion: print w/replies, xml ) Need Help??
hok_si_la has asked for the wisdom of the Perl Monks concerning the following question:

In the following code, the statement, "print FH $data{name};" does not print anything. I do have a column in my table named 'name'. This has to be a simple error. I should add that I have printed out the generated SQL statement and it works fine. I should be able to assume that my session was successful with RaiseError set to one correct?

############################################################ sub getInfo ############################################################ { my $dbtable = shift; my $function = shift; my $where = shift; my ($dbh, $sth, @datetime, @date, $name, %data); my $i=0; $dbh=DBI->connect('DBI:ODBC:Servers', { RaiseError => 1, AutoCommit => + 0 }); my $sth = $dbh->prepare( "$function FROM $dbtable $where" ); $sth->execute; $sth->bind_columns( \( @data{ @{$sth->{NAME_lc} } } )); $sth->{'ChopBlanks'} =1; @datetime = split(' ', $data{submit_date}); @date = split(/-/,$datetime[0]); my $userid = $data{name}; my $username = findADname($userid); open(FH, "> SQLoutput.txt")or die("Couldn't open SQLoutput.dat\n"); print FH $data{name}; print FH "Hello"; close FH; $sth->finish(); $dbh->disconnect(); #----Needed to free up system resources. }

Thanks for your help,
the hoksila

Replies are listed 'Best First'.
Re: Referencing bound variables
by olivierp (Hermit) on Feb 11, 2005 at 21:59 UTC
    I think you need to $sth->fetch at least once to get your %data filled with values.
    HTH
    --
    Olivier
      Indeed! Fetch will get a record and place the values in the bound variables.
Re: Referencing bound variables
by Roy Johnson (Monsignor) on Feb 11, 2005 at 21:47 UTC
    Just before the print statement in question, add
    use Data::Dumper; print STDERR Dumper(\%data);
    to see what you have in there. Or just print out keys %data. It's probably 'NAME'.

    Caution: Contents may have been coded under pressure.
      Okay I have an idea what is happening now. It is apparently a session issue. The SQL statement executes alone, and when I dump %data I get this:
      $VAR1 = { 'denied' => undef, 'disk_space' => undef, 'backupdb' => unde +f & on & on.

      Thanks again Roy for your help,
      Hok_si_la
Re: Referencing bound variables
by holli (Monsignor) on Feb 11, 2005 at 21:54 UTC
    well you declared %data in my ($dbh, $sth, @datetime, @date, $name, %data); but you never assign values to it, thus it is empty.

    holli, /regexed monk/
      Doesn't $sth->bind_columns( \( @data{ @{$sth->{NAME_lc} } } )); assign values to %data?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://430291]
Approved by hardburn
help
Chatterbox?
[Corion]: I usually expect fixed header names, but am sometimes lenient in the order of columns. But changing the report titles often sounds to me as if you are not the sole consument of the export ;)
[shmem]: perldigious: as always - if it ain't broke, don't fix it. Ther must be a very compelling reason for changing column names in a database. Those are rare.
[Corion]: If you have whitespace in the column names in the database, whap the DBAs ;)
[shmem]: It's common for some vendors to have column names such as WRSTVG or some other such whizzbang, and another table where these names are mapped to something meaningful depending on how you look at the data
[shmem]: afair in SAP that occurs all the time

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (9)
As of 2017-05-25 13:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?