2009. július 14., kedd

Perl és Oracle

Feladat: perl programmal oracle adatbázis matatása.
Első lépés:
Ellenőrzés hogy van perl és van oracle modul
$ perl -e 'use DBI; print $DBI::VERSION,"\n";'
1.50
$ perl -e 'use DBD::Oracle; print $DBD::Oracle::VERSION,"\n";
1.17

Ez sikerült is.

Csináltam egy selectet is
#!/opt/common/5.3/perl/bin/perl
use strict;
use DBI;
my
$dbh = DBI->connect( 'dbi:Oracle:DEV_DB',
'ora_user',
'jelszo',
{ RaiseError => 1, AutoCommit => 0 }
) || die "Database connection not made: $DBI::errstr";

$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
$dbh->{ora_check_sql} = 0;
$dbh->{RowCacheSize} = 16;

my
$sth = $dbh->prepare("SELECT ID, FULL_NAME FROM GUI_USERS");
$sth->execute();
my (
$id, $name); # Declare columns
$sth->bind_columns(undef, \$id, \$name);
print "USERS:\n\n";
# Fetch rows from DB
while(
$sth->fetch() ) {
print "$id:\t $name\n";
}
$sth->finish(); # Close cursor
$dbh->disconnect;
print "OK\n";

Ezt sikerült lefuttatni.
Amit nem értek, hogy mi az a undef paraméter a bind_columns() függényben.
Aztán egy update utasítás is sikerült kiadni

#!/opt/common/5.3/perl/bin/perl
use strict;
use DBI;
my
$dbh = DBI->connect( 'dbi:Oracle:DEV_DB',
'ora_user',
'jelszo',
{ RaiseError => 1, AutoCommit => 0 }
) || die "Database connection not made: $DBI::errstr";

$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
$dbh->{ora_check_sql} = 0;

$dbh->do("BEGIN update GUI_USERS set EMAIL = 'kiss.m".'@'."il.hu' where ID = 'kissm'; END;");

$dbh
->commit;
$dbh->disconnect;
print"OK\n";

Ez is sikerült és fontos volt a commit() meghívása mert kikapcsoltam az AutoCommitot

Elvileg ezzel már el lehet indulni.




Nincsenek megjegyzések:

Megjegyzés küldése