[Dbix-class] Oracle xmltype
John Napiorkowski
jjn1056 at yahoo.com
Thu Apr 30 16:33:10 GMT 2009
--- On Thu, 4/30/09, Morgon Hed <morgonhed at yahoo.com> wrote:
> From: Morgon Hed <morgonhed at yahoo.com>
> Subject: Re: [Dbix-class] Oracle xmltype
> To: "DBIx::Class user and developer list" <dbix-class at lists.scsys.co.uk>
> Date: Thursday, April 30, 2009, 10:06 AM
>
> Ok thanks, that is at least giving me a starting point.
> One more quirk though:
>
> In order to get to the raw XML in plain DBI I have to do
> the follwing:
>
> select xmltype.getclobval(xml_column) from table
>
> i.e. I cannot simply select from xml_column but I have to
> pass that to the PL/SQL function xmltype.getclobval to get
> the xml as text.
>
> How can I do that in the DBIx::Class scenario?
Not sure, but take a look at:
http://search.cpan.org/~ribasushi/DBIx-Class-0.08102/lib/DBIx/Class/Manual/Cookbook.pod#Using_database_functions_or_stored_procedures
that seems to offer an example of using procedures in your SQLA. I very rarely do that myself, since I'd rather keep myself database agnostic so you might need to play with it.
jnapiorkowski
>
> Many thanks!
>
> --- On Thu, 4/30/09, John Napiorkowski <jjn1056 at yahoo.com>
> wrote:
>
> > From: John Napiorkowski <jjn1056 at yahoo.com>
> > Subject: Re: [Dbix-class] Oracle xmltype
> > To: "DBIx::Class user and developer list" <dbix-class at lists.scsys.co.uk>
> > Date: Thursday, April 30, 2009, 9:29 AM
> >
> >
> > --- On Thu, 4/30/09, Morgon Hed <morgonhed at yahoo.com>
> > wrote:
> >
> > > From: Morgon Hed <morgonhed at yahoo.com>
> > > Subject: [Dbix-class] Oracle xmltype
> > > To: dbix-class at lists.scsys.co.uk
> > > Date: Thursday, April 30, 2009, 7:28 AM
> > >
> > > Hi,
> > >
> > > I am rather new to DBIx::Class and I wonder if
> > someone
> > > could explain to me how to deal with Oracle
> > > XmlType-columns.
> > >
> > > I have a table which contains a column of type
> > XmlType
> > > and I want that column to be inflated/deflated
> as
> > an
> > > object of it's own.
> > >
> > > What I need to do in order to get to the raw XML
> in
> > plain
> > > DBI is to do something like the following:
> > >
> > > $sth->bind_param(":xml", $xml, { ora_type
> =>
> > > ORA_XMLTYPE } );
> > >
> > > And I cannot figure out how to incorporate this
> > binding
> > > into DBIx::Class.
> > >
> > > Please note that I want both to retrieve and to
> update
> > this
> > > column.
> > >
> > > Many thanks!
> > >
> > > Not 100% sure I know what you need, but I imagine
> this
> > could be handled the same way we hacked bind
> parameters to
> > handle how some databases need to know about bytea or
> blob
> > types. You might want to check out
> > DBIx::Class::Storage::DBI::Pg and in particular the
> method
> > 'bind_attribute_by_data_type' which is used to add
> some bind
> > parameter support for postgresql. Adding this to
> the
> > Oracle DBD should be easy, something like:
> >
> > (in package DBIx::Class::Storage::DBI::Oracle)
> >
> > use DBD::Oracle qw(:ora_types); ## just guessing
> >
> > sub bind_attribute_by_data_type {
> > my ($self,$data_type) = @_;
> >
> > my $bind_attributes = {
> > xml => { pg_type =>
> > DBD::Oracle::ORA_XMLTYPE },
> > };
> >
> > if( defined $bind_attributes->{$data_type} ) {
> > return $bind_attributes->{$data_type};
> > }
> > else {
> > return;
> > }
> > }
> >
> >
> > and then in your storage class, under
> > __PACKAGE__->add_columns you'd do:
> >
> > __PACKAGE__->add_columns(
> > 'xmltype' => {
> > data_type => 'xml',
> > is_nullable => 1,
> > },
> > .....
> >
> > And it should just work, at least for reading and
> writing,
> > if that's what you mean. If you are asking about
> > deeper support for the way Oracle (and now Postgresql
> I
> > believe) has implemented sql functions and extensions
> to do
> > stuff like selecting bits inside an xml stored doc, or
> doing
> > joins againt info stored inside a xml document, right
> now I
> > think you'll need to bind the functions as some of
> the
> > documented examples for using functions in your SQLA.
> >
> > jnapiorkowski
> >
> >
> > John
> >
> >
> >
> >
> > _______________________________________________
> > List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
> > IRC: irc.perl.org#dbix-class
> > SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
> > Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk
> >
>
>
>
>
> _______________________________________________
> List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
> IRC: irc.perl.org#dbix-class
> SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
> Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk
>
More information about the DBIx-Class
mailing list