Apologies for the terseness of this reply, as I'm on my mobile. To treat the result of a function call as a table in Oracle SQL, use the table() function, like this:
select * from table(my_stored_func()) HTH, Michael On Jun 1, 2012 8:01 PM, "Niran Fajemisin" <afa...@yahoo.com> wrote: > So I was able to run some additional tests today on this. I tried to use a > stored function instead of a stored procedure. The hope was that the Stored > Function would simply be a wrapper for the Store Procedure and would simply > return the cursor as the return value. This unfortunately did not work. > > My test attempted to call the function from the query attribute of the > <entity> tag as such: > {call my_stored_func()} > > It raised an error stating that: 'my_stored_func' is not a procedure or is > undefined. This makes sense because the invocation format above is > customarily reserved for a stored procedure. > > So then I tried the typical approach for invoking a function which would > be: > {call ? := my_stored_function()} > > And as expected this resulted in an error stating that: not all variables > bound . Again, this is expected as the "?" notation would be the > placeholder parameter that would be bound to the OracleTypes.CURSOR > constant in a typical JDBC program. > > Note that this function has been tested outside of DIH and it works when > properly invoked. > > I think the bottom-line here is that there is no proper support for stored > procedures (or functions for that matter) in DIH. This is really > unfortunate because anyone thinking of doing any significant processing in > the source RDBMS prior to data export would have to look elsewhere. Short > of adding this functionality to the JdbcDataSource class of the DIH, I > think I'm at a dead end. > > If anyone knows of any alternatives I would greatly appreciate hearing > them. > > Thanks for the responses as usual. > > Cheers. > > > > > >________________________________ > > From: Lance Norskog <goks...@gmail.com> > >To: solr-user@lucene.apache.org; Niran Fajemisin <afa...@yahoo.com> > >Sent: Thursday, May 31, 2012 3:09 PM > >Subject: Re: Using Data Import Handler to invoke a stored procedure with > output (cursor) parameter > > > >Can you add a new stored procedure that uses your current one? It > >would operate like the DIH expects. > > > >I don't remember if DB cursors are a standard part of JDBC. If they > >are, it would be a great addition to the DIH if they work right. > > > >On Thu, May 31, 2012 at 10:44 AM, Niran Fajemisin <afa...@yahoo.com> > wrote: > >> Thanks for your response, Michael. Unfortunately changing the stored > procedure is not really an option here. > >> > >> From what I'm seeing, it would appear that there's really no way of > somehow instructing the Data Import Handler to get a handle on the output > parameter from the stored procedure. It's a bit surprising though that no > one has ran into this scenario but I suppose most people just work around > it. > >> > >> Anyone else care to shed some more light on alternative approaches? > Thanks again. > >> > >> > >> > >>>________________________________ > >>> From: Michael Della Bitta <michael.della.bi...@appinions.com> > >>>To: solr-user@lucene.apache.org > >>>Sent: Thursday, May 31, 2012 9:40 AM > >>>Subject: Re: Using Data Import Handler to invoke a stored procedure > with output (cursor) parameter > >>> > >>>I could be wrong about this, but Oracle has a table() function that I > >>>believe turns the output of a function as a table. So possibly you > >>>could wrap your procedure in a function that returns the cursor, or > >>>convert the procedure to a function. > >>> > >>>Michael Della Bitta > >>> > >>>------------------------------------------------ > >>>Appinions, Inc. -- Where Influence Isn’t a Game. > >>>http://www.appinions.com > >>> > >>> > >>>On Thu, May 31, 2012 at 8:00 AM, Niran Fajemisin <afa...@yahoo.com> > wrote: > >>>> Hi all, > >>>> > >>>> I've seen a few questions asked around invoking stored procedures > from within Data Import Handler but none of them seem to indicate what type > of output parameters were being used. > >>>> > >>>> I have a stored procedure created in Oracle database that takes a > couple input parameters and has an output parameter that is a reference > cursor. The cursor is expected to be used as a way of iterating through the > returned table rows. I'm using the following format to invoke my stored > procedure in the Data Import Handler's data config XML: > >>>> > >>>> <entity name="entity_name" ... query="{call my_stored_proc(inParam1, > inParam2)}"> ...</entity> > >>>> > >>>> I have tested that this query works prior to attempting to use it > from within the DIH. But when I attempt to invoke this stored procedure, it > naturally complains that the output parameter is not specified (essentially > a mismatch in the number of parameters). > >>>> > >>>> I don't know of anyway to pass in a cursor parameter (or any output > parameter for that matter) to the stored procedure invocation from within > the <entity> definition. I would greatly appreciate if anyone could > provide any pointers or hints on how to proceed. > >>>> > >>>> Thanks so much for your time > >>>> > >>> > >>> > >>> > > > > > > > >-- > >Lance Norskog > >goks...@gmail.com > > > > > >