On Fri, Sep 12, 2008 at 9:36 AM, Raja Vadlamudi <[EMAIL PROTECTED]> wrote:

>
>
> On Thu, Sep 11, 2008 at 11:12 PM, Amit Saxena <[EMAIL PROTECTED]>wrote:
>
>> On Fri, Sep 12, 2008 at 12:01 AM, Dr.Ruud
>> <[EMAIL PROTECTED] <[EMAIL PROTECTED]><
>> [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
>>
>
> Here is one simple example. It just works fine.
>
> $do_src = $dbh_src->prepare($sql_retrieve);
> $do_src->execute();
> while (my $data = $do_src->fetchall_arrayref(undef, 4)) {
>         for (@$data) {
>                 print $_->[0] . "\n";
>         }
>         print "Reached end of while loop\n";
> }
>
> Make sure you use 'use strict' to catch unknown problems.
>

This one is working.

Thanks

Regards,
Amit Saxena

Reply via email to