Maybe I should include the output ... ;->

[tlowery@stllnx1 segments]$ perl -w get_segments.pl
Book id: 1
Segment: Title segment: Using DBI Author segment: TBD Cost segment: Free
Pages segment: 327 Print Date segment: 12-DEC-2002

T

On Sun, Aug 19, 2001 at 01:54:11PM -0400, Thomas A . Lowery wrote:
> In this example I've created 1 simple table.
> 
> Books table:
> scott@connect--> /desc books
> Describe: books
>                 NAME           TYPE NULLABLE
> -------------------- -------------- --------
>              BOOK_ID    NUMBER (3)        N
>                   ID    NUMBER (3)        N
>              SEGMENT VARCHAR2 (10)        Y
> [3 rows of 3 fields returned]
> 
> scott@connect--> select * from books/
> BOOK_ID ID                              SEGMENT
> ------- --- -----------------------------------
> 1       1              Title segment: Using DBI
> 1       2                   Author segment: TBD
> 1       3                    Cost segment: Free
> 1       4                    Pages segment: 327
> 1       5       Print Date segment: 12-DEC-2002
> 2       1   Title segment: Programming the Perl
> 3       1     Title segment:  MySQL made easier
> 4       1       Title segment:  MySQL made easy
> [8 rows of 3 fields returned]
> 
> #/usr/local/bin/perl
> 
> require 5.6.0;
> use strict;
> use warnings;
> 
> use DBI;
> 
> my $dbh = DBI->connect();
> 
> $dbh->{AutoCommit} = 0;
> $dbh->{RaiseError} = 1;
> $dbh->{PrintError} = 1;
> 
> # Select segments.
> my $sel_seg_sql = q{
>       select 
>               segment
>       from books 
>       where book_id =  ?
>       order by id ASC
> };
> 
> # Book ID
> my $id = 1;
> 
> # Using a utility method in DBI.
> # $ary_ref = $dbh->selectcol_arrayref($statement, \%attr, @bind_values);
> 
> my $seg_ref = $dbh->selectcol_arrayref( $sel_seg_sql, undef, $id );
> 
> # Bring all the segments to together.
> 
> my $segment = join( " ", @$seg_ref );
> 
> print "Book id: $id\nSegment: $segment\n";
> 
> 
> exit;
> 
> END {
>       $dbh->disconnect if $dbh;
> }
> 
> 
> Tom
> 
> On Fri, Aug 17, 2001 at 12:16:55PM -0400, Jeff Suszczynski wrote:
> > Hello:
> > 
> > Relevant background info: I program in an academic library, using
> > Perl/DBI to connect to our Oracle8 database and query information
> > about our books, etc.. Each book has a record, called a MARC record,
> > which contains various information about Title, Size, Call Number,
> > etc. This MARC record is contained in one or more record segments in
> > the database. What I need to do for my latest project is string these
> > record segments together to form the whole MARC record.
> > 
> > So for every book that has ID=X, I need to concatenate the record
> > segments into a unified whole, so that I can use the Perl module
> > MARC.pm which parses through the various parts of a MARC record to
> > give very granular results... The catch : MARC.pm can only recognize
> > whole MARC records, not a record segment that may be lopped off in the
> > middle of a field somewhere, which is why I need to concatenate and
> > create only one "supersegment" for each ID number.
> >  
> > Any ideas on how to do this within the return loop of a DBI query?
> > 
> > A rough example of oversimplified code is below:
> > 
> > use DBI;
> > ### Grab the ID and Record Segments ###
> > select 
> > id
> > segment
> > from
> > table1
> > where
> > id > 52
> > id < 99
> > 
> > while (@row = $sth->fetchrow_array) 
> > {
> > 
> > $id = $row[0];
> > $seg = $row[1];
> > 
> > then, I need something like (sorry for the mix of Perl and English) - 
> > 
> > if ($id = another $id during the loop)
> > {
> > pull together the $seg from each $id and call the new "supersegment" $full_record;
> > }
> > ### Basically, I am trying to make it so that if two or more record
> > ### segments exist for a single ID, collapse those record segments by
> > ### joining them together ###
> > 
> > use Marc.pm; 
> > ### Now parse through the MARC record with my newly created "Supersegments" ###
> > etc.
> > etc.
> > 
> > Thanks in advance for your help on this hard-to-describe problem...
> 

-- 
Thomas A. Lowery
See DBI/FAQ http://tlowery.hypermart.net

_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com

Reply via email to