[pgsql-ayuda] Ayuda con modulo DBI

Ing. Roberto Andrade Fonseca randrade@abl.com.mx
Tue, 5 Sep 2000 21:55:14 -0500 (CDT)


Hola Estrella:

On Tue, 5 Sep 2000, Estrella Dominguez wrote:

> #!/usr/bin/perl
> 
> use DBI;
> 
> $dbh=DBI->connect('dbi:Pg:dbname=activos','postgres','perron',{RaiseError=>1,AutoCommit=>0});
> 
> $sth = $dbh->prepare("select * from activo");
> $sth->execute;
> while ( @row = $sth->fetchrow()) {
>        print "$row[0], $row[1]\n";
> }
> $sth->finish;
> $dbh->disconnect;
> 
> Funciona sin problemas pero si cambio la linea que
> dice:
> 
> $sth = $dbh->prepare("select * from activo");
> por esta:
> $sth = $dbh->prepare(\'z');
> 
> ya no funciona. Me pueden decir que debi hacer aqui
> para hacer funcionar esto?
No fucniona debido a que el comando '\z' NO es un comando SQL, el cual analiza el prepare de DBI.

\z es un comando interno del monitor de postgresql: psql.

Si buscas en los fuentes de pgsql, seguramente encontrarás las sentencia SQL que preguna a las tablas del sistema
sobre los permisos de acceso que te reporta \z,

O, mejor, usando la opcion -E al levantar psql activos, psql te mostrará la sentencia SQL que realmente está
mandando al motor, en tu caso, \z es equivalente a:

********* QUERY *********
SELECT relname as "Relation",
       relacl as "Access permissions"
FROM   pg_class
WHERE  ( relkind = 'r' OR relkind = 'S') AND
       relname !~ '^pg_'
ORDER BY relname
************************

Usa esta sentenia ane tu prepare y nos platicas.

> 
> y abusando de su confianza :) (Como doy lata, pero de
> que otra forma aprendo)
> Como le hago para que esto me funcione:
> 
> $sth = $dbh->prepare("create user prueba with password
> 'testa'");
> $sth->execute;
> $dbh->commit;
> $dbh->disconnect;

El script debe decir:

#!/usr/bin/perl -w

use DBI;                
                                  
$dbh=DBI->connect('dbi:Pg:dbname=activos','postgres','perron',{RaiseError=>1});

$sth = $dbh->do('create user prueba with password \'testa\'');
$dbh->disconnect;


Es decir, sin AutoCommit y, mejor, con do.


Sugererencia adiconal:

usa siempre:

#!/usr/bin/perl -w

                 ^
	con -w


Saludos,

Roberto Andrade Fonseca
randrade@abl.com.mx

--------- Pie de mensaje -------------------------------------------
Archivo historico: http://tlali.iztacala.unam.mx/maillist/pgsql-ayuda
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text   : unsubscribe pgsql-ayuda