Evtl. bug in Beta version of dotConnect for Oracle 5.35.52
Posted: Mon 09 Nov 2009 18:08
Hello
I'm having the following error when I call a stored procedure from linq
Code snippet
string s = null;
db.GetAvdat(h.KategoriCd, h.SchildNr, h.StammNr, ref s);
s gets the value of the first parameter instead of the value of ref s
//StoredProcedure signature, oracle 9207
procedure get_avdat( kat_in varchar2, schild_in varchar2, stamm_nr_in varchar2, avdat_out out varchar2 )
// Generated code
// AvdatOut = ((string)(result.GetParameterValues returns the first parameter, in this case KatIn instead of the ref string AvdatOut
[Function(Name=@"TSTEUER.GET_AVDAT")]
public System.Int32 GetAvdat([Parameter(Name="KAT_IN", DbType="VARCHAR2")] string KatIn, [Parameter(Name="SCHILD_IN", DbType="VARCHAR2")] string SchildIn, [Parameter(Name="STAMM_NR_IN", DbType="VARCHAR2")] string StammNrIn, [Parameter(Name="AVDAT_OUT", DbType="VARCHAR2")] ref string AvdatOut)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), KatIn, SchildIn, StammNrIn, AvdatOut);
AvdatOut = ((string)(result.GetParameterValue(0)));
return ((System.Int32)(result.ReturnValue));
}
// This works manually changed code
[Function(Name=@"TSTEUER.GET_AVDAT")]
public System.Int32 GetAvdat([Parameter(Name="KAT_IN", DbType="VARCHAR2")] string KatIn, [Parameter(Name="SCHILD_IN", DbType="VARCHAR2")] string SchildIn, [Parameter(Name="STAMM_NR_IN", DbType="VARCHAR2")] string StammNrIn, [Parameter(Name="AVDAT_OUT", DbType="VARCHAR2")] ref string AvdatOut)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), KatIn, SchildIn, StammNrIn, AvdatOut);
AvdatOut = ((string)(result.GetParameterValue(3))); //Manually changed to ...Value(3)
return ((System.Int32)(result.ReturnValue));
}
Best regards
Kurt
I'm having the following error when I call a stored procedure from linq
Code snippet
string s = null;
db.GetAvdat(h.KategoriCd, h.SchildNr, h.StammNr, ref s);
s gets the value of the first parameter instead of the value of ref s
//StoredProcedure signature, oracle 9207
procedure get_avdat( kat_in varchar2, schild_in varchar2, stamm_nr_in varchar2, avdat_out out varchar2 )
// Generated code
// AvdatOut = ((string)(result.GetParameterValues returns the first parameter, in this case KatIn instead of the ref string AvdatOut
[Function(Name=@"TSTEUER.GET_AVDAT")]
public System.Int32 GetAvdat([Parameter(Name="KAT_IN", DbType="VARCHAR2")] string KatIn, [Parameter(Name="SCHILD_IN", DbType="VARCHAR2")] string SchildIn, [Parameter(Name="STAMM_NR_IN", DbType="VARCHAR2")] string StammNrIn, [Parameter(Name="AVDAT_OUT", DbType="VARCHAR2")] ref string AvdatOut)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), KatIn, SchildIn, StammNrIn, AvdatOut);
AvdatOut = ((string)(result.GetParameterValue(0)));
return ((System.Int32)(result.ReturnValue));
}
// This works manually changed code
[Function(Name=@"TSTEUER.GET_AVDAT")]
public System.Int32 GetAvdat([Parameter(Name="KAT_IN", DbType="VARCHAR2")] string KatIn, [Parameter(Name="SCHILD_IN", DbType="VARCHAR2")] string SchildIn, [Parameter(Name="STAMM_NR_IN", DbType="VARCHAR2")] string StammNrIn, [Parameter(Name="AVDAT_OUT", DbType="VARCHAR2")] ref string AvdatOut)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), KatIn, SchildIn, StammNrIn, AvdatOut);
AvdatOut = ((string)(result.GetParameterValue(3))); //Manually changed to ...Value(3)
return ((System.Int32)(result.ReturnValue));
}
Best regards
Kurt