Daniel John Debrunner wrote:
Anil Samuel wrote:

So you can't use CALL for a function. I sent the examples of a function
use earlier, using the VALUES or SELECT statements.

Dan.


I created a PROCEDURE using
CREATE PROCEDURE dtp.TOTAL_LEAVE_FOR_TYPE (
  EMPLOYEE CHAR(80),
  LEAVE_TYPE_ID INT,
  OUT TOTAL_LEAVE INT)
        LANGUAGE JAVA
        EXTERNAL NAME 'oracle.dtp.derby.sample.LeaveHelper.TotalLeaveForType'
        PARAMETER STYLE JAVA;

not a FUNCTION.

I think it's because the second parameter is an OUT parameter and you
are passing a value in. To call a procedure with an INOUT or OUT
parameter you need to use a CallableStatement from a JDBC program, not ij.

However, this procedure definition does not match the Java code you
supplied, which is why I assumed you needed a CREATE FUNCTION. Your java
code takes in two (IN) parameters and returns a value.

A procedure needs to have a void return type, and OUT/INOUT parameters
are passed using a one element array of the required type.

From what you are trying to to, it looks like a FUNCTION is what you need.

The current behavior does not seem very user friendly. Many compilers will in such situations give a message indicating that there are function(s) with this name, but the signature(s) does not match. I think something like that would be very helpful in identifying the cause of the problem.

--
Øystein

Reply via email to