<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:$B%a%$%j%*(B
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>
<div>$B$O$8$a$^$7$F!#$h$m$7$/$*4j$$CW$7$^$9!#(B</div><div><br></div><div>Oracle11g(ODP.NET 2.111.6.20)</div><div>ASP.NET$B$G(BAOP$B$r;HMQ$7$F(BORACLE$B%9%H%"%I$r8F$S=P$7$F$$$^$9!#(B</div><div>$B3FDj5A$O0J2<$NDL$j$G$9!#(B</div><div><br></div><div><br></div><div>ITestDao.cs</div><div> [Bean(typeof(TestDaoEntity))]</div><div> public interface ITestDao</div><div> {</div><div> [Procedure("TESTPROC")]</div><div> void TESTPROC(out string p);</div><div> }</div><div><br></div><div>TestDaoEntity.cs</div><div> public class TestDaoEntity</div><div> {</div><div> //$B%9%H%"%I8F$S=P$7MQ(BDAO$B$N$?$a$N%@%_!<%(%s%F%#%F%#(B</div><div> }</div><div><br></div><div>CREATE OR REPLACE PROCEDURE TESTPROC(p OUT VARCHAR2)</div><div>IS</div><div>BEGIN</div><div> p := '';</div><div>END;</div><div><br></div><div><br></div><div>$B$3$N$H$-!"(BTESTPROC$B$N=PNO%Q%i%a!<%?$K(B''($BD9$5%<%m$NJ8;zNs(B)$B$r%;%C%H$9$k$H!"0J2<$NNc30$,H/@8$7$^$9!#2?$+CM$,%;%C%H$5$l$F$$$l$PNc30$OH/@8$7$^$;$s!#(B</div><div><br></div><div>System.InvalidCastException $B$O%f!<%6!<(B $B%3!<%I$K$h$C$F%O%s%I%k$5$l$^$;$s$G$7$?!#(B</div><div> Message=$B0z?t$NLa$jCM$N7?$,L58z$G$9!#(B</div><div> Source=mscorlib</div><div> StackTrace:</div><div> $B>l=j(B System.Runtime.Remoting.Proxies.RealProxy.ValidateReturnArg(Object arg, Type paramType)</div><div> $B>l=j(B System.Runtime.Remoting.Proxies.RealProxy.PropagateOutParameters(IMessage msg, Object[] outArgs, Object returnValue)</div><div> $B>l=j(B System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)</div><div> $B>l=j(B System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)</div><div> InnerException: </div><div><br></div><div>Seasar.Framework.Aop.Proxy</div><div>AopProxy.cs</div><div> public override IMessage Invoke(IMessage msg)</div><div> {</div><div> $B!AN,!A(B</div><div> IMethodReturnMessage mrm = new ReturnMessage(ret, methodArgs, methodArgs.Length,</div><div> methodMessage.LogicalCallContext, (IMethodCallMessage) msg);</div><div><br></div><div> return mrm;</div><div> }</div><div><br></div><div><br></div><div>$B@5>o%Q%?!<%s$H8+Hf$Y$?$H$3$m(Bmrm.OutArgs$B$,(BSystem.DBNull$B$N$H$-$KNc30$H$J$k$3$H$,$o$+$C$?$N$G!"(B</div><div>$B%9%H%"%I$NLa$jCM$r<h$j=P$9=hM}$K(B>$B$N9T$rDI2C$7$F$_$^$7$?!#(B</div><div><br></div><div>Seasar.Dao.Impl.ObjectBasicProcedureHandler.cs</div><div><br></div><div> // Out$B$^$?$O(BInOut$B%Q%i%a!<%?CM$r<hF@$9$k(B</div><div> for (int i = 0; i < args.Length; i++)</div><div> {</div><div> if (ArgumentDirection[i] == ParameterDirection.InputOutput ||</div><div> ArgumentDirection[i] == ParameterDirection.Output)</div><div> {</div><div>> DbType dbType = GetDbValueType(ArgumentTypes[i]);</div><div>> if ((dbType == DbType.String) && ((IDataParameter)cmd.Parameters[i + cnt]).Value is System.DBNull)</div><div>> {</div><div>> args[i] = "";</div><div>> }</div><div>> else</div><div>> {</div><div> args[i] = ((IDataParameter)cmd.Parameters[i + cnt]).Value;</div><div>> }</div><div> }</div><div> }</div><div><br></div><div><br></div><div>$B$3$l$G$H$j$"$($:Nc30$O2sHr$G$-$?$N$G$9$,!"$=$b$=$b$3$N$d$jJ}$GNI$$$N$+!"$h$jNI$$!JIaDL$N!K$d$jJ}$,$"$k$N$+!"<ALd$5$;$FD:$$$?<!Bh$G$9!#(B</div><div>$B$h$m$7$/$*4j$$CW$7$^$9!#(B</div><div><br></div>                                            </div></body>
</html>