TABLE OF INTEGER as result
Posted: Thu 03 May 2012 12:12
Hello,
i have got a stored procedure with a function that returns a table of integer.
Somehow i can't call this procedure from c# without getting a Devart.Data.Oracle.OracleException: ORA-06550 exeption.
We are using dotConnect for Oracle 6.60.268
Does anybody have a hint how to configure the return parameter ??
Or DO we have to use dotConnect 6.70 or 6.80
thanx for any help
// C# CODE
i have got a stored procedure with a function that returns a table of integer.
Somehow i can't call this procedure from c# without getting a Devart.Data.Oracle.OracleException: ORA-06550 exeption.
We are using dotConnect for Oracle 6.60.268
Does anybody have a hint how to configure the return parameter ??
Or DO we have to use dotConnect 6.70 or 6.80
thanx for any help
Code: Select all
// ORACLE PACKAGE
PACKAGE my_package
IS
TYPE INT_TABTYPE IS TABLE OF INTEGER;
FUNCTION get_block(p_sequence_name IN VARCHAR2, p_increment IN INTEGER) RETURN INT_TABTYPE;
END; --
// C# CODE
Code: Select all
public decimal[] GetBlock(string sequenceName, int increment)
{
decimal[] result;
OracleParameterCollection parameters;
parameters = this.Parameters;
parameters.Clear();
OracleParameter parameter;
parameter = new OracleParameter("RESULT", OracleDbType.Number);
parameter.Direction = ParameterDirection.ReturnValue;
parameter.Size = 50;
parameter.ArrayLength = 20;
parameter.IsNullable = true;
parameters.Add(parameter);
parameter = new OracleParameter("p_sequence_name", OracleDbType.VarChar);
parameter.Direction = ParameterDirection.Input;
parameter.Value = sequenceName;
parameters.Add(parameter);
parameter = new OracleParameter("p_increment", OracleDbType.Integer);
parameter.Direction = ParameterDirection.Input;
parameter.Value = increment;
parameters.Add(parameter);
ExecuteProcedure("GET_BLOCK", parameters);
if ((Parameters["Result"].Value == System.DBNull.Value))
{
result = null;
}
else
{
result = ((decimal[])(Parameters["Result"].Value));
}
return result;
}