Die Methode zur Behandlung von mehreren Ergebnismengen aus einer Abfrage umfasst das Einbetten der Abrufschleife in einer anderen Schleife, der sich zwischen Ergebnismengen bewegt.
SQL-Anweisungen, die mehrere Ergebnismengen zurückgeben, müssen vor ihrer Ausführung vorbereitet werden. Die prepare-Methode gibt ein Handle für diese Anweisung zurück. Mit diesem Handle führen Sie die Anweisung aus. Anschließend rufen Sie die Metadaten der Ergebnismenge und die Zeilen der einzelnen Ergebnismenge ab.
#!/usr/local/bin/perl -w # use DBI; use strict; my $database = "demo"; my $data_src = "DBI:SQLAnywhere:SERVER=$database;DBN=$database"; my $uid = "DBA"; my $pwd = "sql"; my $sel_stmt = "SELECT ID, GivenName, Surname FROM Customers ORDER BY GivenName, Surname; SELECT * FROM Departments ORDER BY DepartmentID"; my %defaults = ( AutoCommit => 0, # Require explicit commit or rollback. PrintError => 0 ); my $dbh = DBI->connect($data_src, $uid, $pwd, \%defaults) or die "Cannot connect to $data_src: $DBI::errstr\n"; &db_query($sel_stmt, $dbh); $dbh->rollback; $dbh->disconnect; exit(0); sub db_query { my($sel, $dbh) = @_; my($row, $sth) = undef; $sth = $dbh->prepare($sel); $sth->execute; do { print "Fields: $sth->{NUM_OF_FIELDS}\n"; print "Params: $sth->{NUM_OF_PARAMS}\n\n"; print join("\t\t", @{$sth->{NAME}}), "\n\n"; while($row = $sth->fetchrow_arrayref) { print join("\t\t", @$row), "\n"; } print "---end of results---\n\n"; } while (defined $sth->more_results); $sth = undef; } __END__ |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |