|
From: Anupam M. (JIRA) <nh...@gm...> - 2011-04-26 05:30:55
|
Problem in passing user defined data type to stored procedure as parameter
--------------------------------------------------------------------------
Key: NH-2675
URL: http://216.121.112.228/browse/NH-2675
Project: NHibernate
Issue Type: Bug
Components: DataProviders / Dialects
Affects Versions: 3.0.0.GA
Reporter: Anupam Mishra
HI I am using NHibernate30.As per our requirement we need to send User Defined data type(i.e Custom Data Type ) as a parameter to stored procedure.With ADO.net this is working
following are my Stored Procedure,Type and domain Object .
*************Store Procedure****************
create or replace
PROCEDURE odp_varray_sample_proc(p_cursor out SYS_REFCURSOR,param IN odp_varray_sample_type)
IS
BEGIN
FOR
counter IN 1..3
LOOP
insert into temp_tran (emp_id, emp_name, emp_password, team_associated_with,IS_CAPTAIN,NO_OF_MOM,BALANCE)
SELECT EMP_ID,EMP_NAME,EMP_PASSWORD,TEAM_ASSOCIATED_WITH,
IS_CAPTAIN,NO_OF_MOM,BALANCE FROM employee WHERE EMP_ID=param(counter);
end LOOP;
open p_cursor for select * from temp_tran;
delete from temp_tran;
END odp_varray_sample_proc;
*****End Stored Procedure**********************
**TYpe in Database Oracle***********
create or replace type odp_varray_sample_type as varray(3000) of number;
****End Type in Database Oracle******
*****Domain Object*****************************
public class odp_varray_sample_type : NHibernate.Type.ImmutableType
{
public Int64[] int_array;
public odp_varray_sample_type()
: base(new NHibernate.SqlTypes.SqlType(System.Data.DbType.Object))
{
}
public odp_varray_sample_type(Int64[] array)
: base(new NHibernate.SqlTypes.SqlType(System.Data.DbType.Object))
{
this.int_array = array;
}
public override object FromStringValue(string xml)
{
return xml.ToString();
}
public override object Get(System.Data.IDataReader rs, string name)
{
return name.ToString();
}
public override object Get(System.Data.IDataReader rs, int index)
{
return index.ToString();
}
public override void Set(System.Data.IDbCommand cmd, object value, int index)
{
OracleCommand orclCmd = (OracleCommand)cmd;
orclCmd.Parameters[index].OracleDbType
= OracleDbType.Int64;
orclCmd.Parameters[index].CollectionType
= OracleCollectionType.PLSQLAssociativeArray;
orclCmd.Parameters[index].Value = value;
}
public override string ToString(object val)
{
return val.ToString();
}
public override string Name
{
get
{
return Name;
}
}
public override Type ReturnedClass
{
get
{
return this.GetType();
}
}
}
*****END Domain Object*****************************
Error coming as
Wrong number of argument or type.Please help.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://216.121.112.228/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
|