Hi all,

I'm using ESQL to call stored procedures from XSP pages. I'm using <esql:call>, following the documentation and examples I found on the web.
I am able to get the number of rows affected by the stored procedure (SP) using <esql:get-update-count/>. (See sample XSP page below.)
But in some cases, I also need to get the return value from the SP.
Here is an example of SP code:


CREATE PROCEDURE dbo.Update_Alternate_Dialect_Name
@_id int,
@Is_Pejorative char(1), @Speech_Variety_Name_Id int
AS
UPDATE Alternate_Dialect_Name
SET Is_Pejorative = @Is_Pejorative, Speech_Variety_Name_Id = @Speech_Variety_Name_Id
WHERE Alternate_Dialect_Name_Id = @_id
RETURN @@ROWCOUNT


Obviously, in this case, the return value of the SP is the same as the rowcount (number of rows affected). But I will be creating other examples where the SP has to return, e.g. the ID of a newly-created row.

Here is my XSP page, as it currently stands (some irrelevant parts deleted):

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsp:page
xmlns:esql="http://apache.org/cocoon/SQL/v2"; xmlns:xsp="http://apache.org/xsp";
xmlns:xsp-request="http://apache.org/xsp/request/2.0";>
<operation>
...
<esql:connection>
<esql:pool>GEM-Ethnologue-SQLServer-updater</esql:pool>
<esql:execute-query>
<esql:call result-set-from-object="1">{call
Update_Ethnologue_Continent(<esql:parameter direction="in">
<xsp-request:get-parameter name="_id"/>
</esql:parameter>,<esql:parameter direction="in">
<xsp-request:get-parameter name="Continent_Name"/>
</esql:parameter>)}</esql:call>
<esql:call-results>
<!-- this part is an attempt to get the return value of the SP.
I'm follow instructions for getting a returned rowset, which is not
really what I want, but I can't find instructions for what I want. So I'm
somewhat flailing in the dark. -->
<esql:use-results>
<!-- This part does not give an error, but also gives no output. -->
<fish><esql:result><xsp:expr>(ResultSet)<esql:get-object column="1" from-call="true"/></xsp:expr></esql:result></fish>
<!-- I also tried


   <esql:results>
     <esql:row-results>
       <esql:get-string column="1"/>
     </esql:row-results>
   </esql:results>

which gave the error
Exception in ServerPagesGenerator.generate(): org.apache.avalon.framework.CascadingRuntimeException: Error getting ascii data from column 1


Caused by: java.lang.NullPointerException
        at 
org.apache.cocoon.components.language.markup.xsp.EsqlHelper.getAscii(EsqlHelper.java:283)

   probably because I'm trying to get a column value out of a scalar. -->
         </esql:use-results>
       </esql:call-results>
       <esql:update-results>
         <rows-affected>
           <esql:get-update-count/>
         </rows-affected>
       </esql:update-results>
     </esql:execute-query>
   </esql:connection>
 </operation>
</xsp:page>

I'm really just shooting in the dark when it comes to getting the return value from an SP.
Any help on how to find it?
Would it help if I used an "out" parameter instead of the return value? If so, how to I get the value of the "out" parameter?


Thanks,
Lars



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to