Hmm... I wonder if configuring a procedure to return a value (as opposed to using an OUT parameter) causes the problem. Here is a procedure from the Cayenne test suite that returns OUT parameter that works with SQLServer 2005:

1. procedure definition:

CREATE PROCEDURE [dbo].[cayenne_tst_out_proc] @in_param INT, @out_param INT output AS
BEGIN
        SELECT @out_param = @in_param * 2
END

2. Cayenne mapping of procedure (note that since procedure parameters in JDBC are positional, the names I've been using are mapped for Java convenience and exclude '@'):

<procedure name="cayenne_tst_out_proc">
   <procedure-parameter name="in_param" type="INTEGER" direction="in"/>
<procedure-parameter name="out_param" type="INTEGER" direction="out"/>
</procedure>

3. Code that calls it:

        ProcedureQuery q = new ProcedureQuery("cayenne_tst_out_proc");
        q.addParameter("in_param", new Integer(20));

        List rows = runProcedureSelect(q);
        Map outParams = (Map) rows.get(0);
        Number price = (Number) outParams.get("out_param");

4. Logs:

INFO [main 04-30 11:08:04] QueryLogger: {call cayenne_tst_out_proc (?, ?)} [bind: 20, '[OUT]'] INFO [main 04-30 11:08:04] QueryLogger: === returned 1 row. - took 0 ms.


Andrus


On Apr 27, 2007, at 7:42 PM, Alejandro Daniel Toffetti wrote:

Hi !!

It didn't worked, even when I modified everything (the stored procedure, the xml datamap and the java code) to call a SP with no parameters, it still
shows me the same error...


Hi Daniel,


On Apr 26, 2007, at 7:39 PM, Alejandro Daniel Toffetti wrote:
            q.addParameter("RegionID", 1);

I think you need to use the "@" sign in the parameter name
("@RegionID"). To Cayenne "@" has no special meaning in this case, so
the parameter name is taken literally.


Reply via email to