Problema con hash_ref
Publicado: 2013-06-14 10:16 @469
Tengo este código y una base de datos PostgreSQL.
Éste depende de un archivo .pm con nombre Data.pm que ejecuta los módulos Select2 y Fetch.
Estos están así:
pero al ejecutar el script, sí realiza la condición que indica ya que el cuarto parámetro dice "valor" e ingresa a la condición correcta, pero me retorna el siguiente error:
DBD::Pg::st fetchrow_hashref failed: no statement executing at Data.pm
la cual hace referencia a la línea del $href=$self->{STH}->fetchrow_hashref();
¿Me podrían ayudar? Yo necesito desplegar el valor de sum(valor) pero no logro hacerlo. Ya probé con fetchrow_arrayref(), fetchrow_array(), y tampoco.
Gracias
Using perl Syntax Highlighting
- $Data3->Select2( 'cred07h.historia',
- 'pan = \'' . $$pan{'pan'} . '\' and deborcre=\'D\' and anomesci=\'' . $$ciclo{'anomesci'} . '\'', 'valor' );
- $charge = $Data3->Fetch();
- $Statements->ChargeAmount( $$charge{'valor'} );
- $Data3->Finish();
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Éste depende de un archivo .pm con nombre Data.pm que ejecuta los módulos Select2 y Fetch.
Estos están así:
Using perl Syntax Highlighting
- sub Select2 {
- my $self = shift;
- my $sql = undef;
- my @row = undef;
- my @rows = undef;
- my $href = undef;
- my $i = 0;
- $self->{TABLE} = shift if (@_);
- $self->{KEYS} = shift;
- $self->{NUM} = shift;
- if ( $self->{NUM} eq 'SI' ) {
- if ( !$self->{KEYS} ) {
- $sql = "$self->{TABLE} ";
- }
- else {
- $sql = "$self->{TABLE} WHERE $self->{KEYS} ";
- }
- $self->{STH} = $self->{DBH}->prepare( 'SELECT max(fingreso) as fingreso FROM ' . $sql )
- or die "Failed prepare\n";
- $self->{STH}->execute() or die "Failed execute\n";
- }
- elsif ( $self->{NUM} eq 'valor' ) {
- if ( !$self->{KEYS} ) {
- $sql = "$self->{TABLE} ";
- }
- else {
- $sql = "$self->{TABLE} WHERE $self->{KEYS} ";
- }
- $self->{STH} = $self->{DBH}->prepare( 'SELECT sum(valor) as valor FROM ' . $sql ) or die "Failed prepare\n";
- my $valor;
- $self->{STH}->execute() or die "Failed execute\n";
- }
- elsif ( $self->{NUM} eq 'ints' ) {
- if ( !$self->{KEYS} ) {
- $sql = "$self->{TABLE} ";
- }
- else {
- $sql = "$self->{TABLE} WHERE $self->{KEYS} ";
- }
- $self->{STH} = $self->{DBH}->prepare( 'SELECT sum(ints) as ints FROM ' . $sql ) or die "Failed prepare\n";
- $self->{STH}->execute() or die "Failed execute\n";
- }
- else {
- if ( !$self->{KEYS} ) {
- $sql = "$self->{TABLE} ";
- }
- else {
- $sql = "$self->{TABLE} WHERE $self->{KEYS} ";
- }
- $self->{STH} = $self->{DBH}->prepare( 'SELECT count(*) as count FROM ' . $sql ) or die "Failed prepare\n";
- $self->{STH}->execute() or die "Failed execute\n";
- }
- }
- sub Fetch() {
- my $self = shift;
- my $tag = shift;
- my $href = undef;
- #print "Tag : [$tag]\n";
- $href = $self->{STH}->fetchrow_hashref();
- return $href;
- }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
pero al ejecutar el script, sí realiza la condición que indica ya que el cuarto parámetro dice "valor" e ingresa a la condición correcta, pero me retorna el siguiente error:
DBD::Pg::st fetchrow_hashref failed: no statement executing at Data.pm
la cual hace referencia a la línea del $href=$self->{STH}->fetchrow_hashref();
¿Me podrían ayudar? Yo necesito desplegar el valor de sum(valor) pero no logro hacerlo. Ya probé con fetchrow_arrayref(), fetchrow_array(), y tampoco.
Gracias