El problema que tengo es el siguiente: ¿hay alguna manera de obtener el valor de un campo autoincremental desde Perl? Estoy haciendo un script en Perl donde inserto un registro en una tabla de Perl llamada programas, la cual tiene un campo tipo aautoincremental llamado "id". Cada vez que inserto un programa el campo id se incrementa automáticamente, entonces quiero saber cómo puedo saber el valor de id.
Buscando en la web encontré que se regresa con RETURNING id, pero no sé cómo obtener ese valor desde Perl. Este es el script en el cual estoy tratando de recuperar ese valor.
Using perl Syntax Highlighting
- #!/usr/bin/perl -w
- BEGIN
- {
- # Declaramos la ruta de ubicacion del modulo 'comun'.
- @INC=(@INC,"/var/www/cgi-bin/comun");
- }
- use principal_html;
- use strict;
- &insertar_programa()
- exit;
- sub inserta_programa {
- my $sql="INSERT INTO programas (nombre_programa,tipo_programa,status_programa) VALUES ('$FORM{nombre}','$FORM{tipo}',$FORM{status}) RETURNING id";
- my $id=&ejecuta($FORM{db},$sql);
- return $id;
- }
- sub ejecuta {
- my ($dbh,$sth,$resultado);
- my ($db,$sql) = @_;
- $dbh=DBI->connect("dbi:Pg:dbname=$db; host=$ipserver; port=5432","postgres","TsyaR$_54") or die \
- "Imposible conectar a la base de datos: $DBI::errstr";
- if(!$DBI::errstr){
- $sth = $dbh->prepare($sql) or die "No se ha preparado: $DBI::errstr";
- $resultado=$sth->execute or die "No es posible la ejecucion $sql $DBI::errstr";
- $sth->finish;
- $dbh->disconnect;
- return $resultado;
- } else { &mensaje("Error !!!!","Base de Datos Inexistente"); exit; }
- }
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4
El insert lo hace correctamente, pero cuando regreso la variable "$resultado" siempre me regresa el valor de uno. Espero y puedan ayudarme a obtener el valor del campo autoincremental.