On Fri, Sep 12, 2008 at 12:01 AM, Dr.Ruud <[EMAIL PROTECTED]<[EMAIL PROTECTED]> > wrote:
> "Amit Saxena" schreef: > > Dr.Ruud: > >> jm: > > >>> there is a LIMIT option for the SELECT statement that will return > >>> the number of records you desire. > >>> > >>> $sth = $dbh->prepare("select <whatever> from <table> <optional WHERE > >>> arguments> LIMIT <desired number of records>"); > >>> $sth->execute(); > >>> > >>> while ($vars ...) = $sth->fetchrow_array()) > >>> { > >>> } > >>> # or whatever syntax best suits your preferences > >> > >> That won't always work as you expect it. You need to give values for > >> the ORDER BY and OFFSET and LIMIT, but between queries there can be > >> new rows inserted or deleted, so you might get the same row again, > >> or miss new ones. > >> [snipped signature, one should never quote signatures] > > > > What about the scenario when the table is accessed in a read-only > > mode ? > > > Things get mixed up now. One technique is the one documented in the DBI > documentation (as I quoted), the other technique is doing repeated > queries with changing offset. Both have their uses. > > > Also I want to know whether the subsequent calls to fetchrow_array > > will actually fetch the next LIMIT records or the current LIMIT one. > > The query that you prepared for a "fetchrow_arrayref() with a > $max_records parameter" can have a SQL-LIMIT value, but that value is of > course normally greater than the $max_records value. > The $max_records value is the number of rows (or chunk size) that you > want to work on at the same time. > The SQL-LIMIT value is the maximum number of rows that the query returns > (in total). > > -- > Affijn, Ruud > > "Gewoon is een tijger." > > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > http://learn.perl.org/ > > > I have made a sample program to test this using my old program :- Old Program :- # cat test1.pl #!/usr/bin/perl ##!/u01/app/oracle/product/10.1.0/db_1/perl/bin/perl # Example PERL DBI/DBD Oracle Example on Oracle 10g use DBI; my $dbname = ""; ## DB Name from tnsnames.ora my $user = ""; my $passwd = ""; #### Connect to the database and return a database handle $dbh = DBI->connect("dbi:Oracle:${dbname}", $user, $passwd); if($dbh){ print("Connected as user $user\n"); } else { print("Failed to connect!\n"); exit; } #### Prepare and Execute a SQL Statement Handle my $sth = $dbh->prepare("SELECT * FROM employee"); $sth->execute(); # [ # [ 1, 2, 3 ], # [ 4, 5, 6 ], # [ 7, 8, 9 ] # ] $recordref = $sth->fetchall_arrayref(); foreach $recordrow (@{$recordref}) { $col1 = ${$recordrow}[0]; $col2 = ${$recordrow}[1]; $col3 = ${$recordrow}[2]; $col4 = ${$recordrow}[3]; $col5 = ${$recordrow}[4]; $col6 = ${$recordrow}[5]; print "\n[$col1][$col2][$col3][$col4][$col5][$col6]"; } print("Select Done!..."); #### Disconnect if($dbh->disconnect){ print("Disconnected\n"); } else { print("Failed to disconnect\n"); } # Output of Old Program :- # perl test1.pl Connected as user [100][Wilson][Clrk][1700][][10] [101][Smith][Slsm][2500][1300][40] [103][Reed][Anlt][3500][][30] [105][Watson][Mngr][4500][0][30] [109][Allen][Mngr][3800][8000][40] [110][Turner][Clrk][1800][][50] [200][Chen][Mngr][2900][][10] [210][Ramirez][Mngr][3650][][50] [213][McDonnel][Clrk][1625][][60] [214][Simpson][Drvr][825][][60] [215][Di Salvo][Spvr][2700][][60] [220][Schwartz][Slsm][4250][5300][40]Select Done!...Disconnected New Program :- # cat test3.pl #!/usr/bin/perl ##!/u01/app/oracle/product/10.1.0/db_1/perl/bin/perl # Example PERL DBI/DBD Oracle Example on Oracle 10g use DBI; my $dbname = ""; ## DB Name from tnsnames.ora my $user = ""; my $passwd = ""; #### Connect to the database and return a database handle $dbh = DBI->connect("dbi:Oracle:${dbname}", $user, $passwd); if($dbh){ print("Connected as user $user\n"); } else { print("Failed to connect!\n"); exit; } #### Prepare and Execute a SQL Statement Handle my $sth = $dbh->prepare("SELECT * FROM employee"); $sth->execute(); # [ # [ 1, 2, 3 ], # [ 4, 5, 6 ], # [ 7, 8, 9 ] # ] my $max_rows = 4; # $recordref = $sth->fetchall_arrayref(); # while ($recordref = $sth->fetchall_arrayref(undef, $max_rows)) #while($row = shift(@$recordref) || shift(@{$recordref=$sth->fetchall_arrayref(undef, $max_rows)})) { } while (my $recordref = shift(@$rowcache) || shift ( @{$rowcache = $sth->fetchall_arrayref(undef, $max_rows)} )) { foreach $recordrow (@{$recordref}) { $col1 = ${$recordrow}[0]; $col2 = ${$recordrow}[1]; $col3 = ${$recordrow}[2]; $col4 = ${$recordrow}[3]; $col5 = ${$recordrow}[4]; $col6 = ${$recordrow}[5]; print "\n[$col1][$col2][$col3][$col4][$col5][$col6]"; } print "\n----------------\n"; }; print("\nSelect Done!...\n"); #### Disconnect if($dbh->disconnect){ print("Disconnected\n"); } else { print("Failed to disconnect\n"); } # Output of New program :- # perl test3.pl Connected as [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] ---------------- [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] ---------------- [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] ---------------- [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] ---------------- [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] ---------------- [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] ---------------- [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] ---------------- [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] ---------------- [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] ---------------- [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] ---------------- [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] ---------------- [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] [][][][][][] ---------------- Select Done!... Disconnected [EMAIL PROTECTED] ~]# I am still not clear about what's mentioned in the documentation and some of the websites stated for this maximum row feature in Perl-DBI. if it's possible, please someone state a small working example using this feature using hashref or arrayref. Thanks & Regards, Amit Saxena