ibatis 存储过程(oracle) 带输入和输出的多个参数

LIMINLY520 2015-05-15 02:33:33
xml文件
<?xml version="1.0" encoding="utf-8" ?>
<sqlMap namespace="Maps" xmlns="http://ibatis.apache.org/mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<alias>
<!--类的别名-->
<typeAlias alias="UserInfo" type="WebApplication1.Model.UserModel"/>
</alias>


<statements>
<parameterType id="RoomStatusParameters" class="Hashtable">
<parameter property="ORDERID" jdbcType="VARCHAR" javaType="String" mode="IN"/>
<parameter property="ITEMID" jdbcType="VARCHAR" javaType="String" mode="IN"/>
<parameter property="OPERID" jdbcType="VARCHAR" javaType="String" mode="IN"/>
<parameter property="EXECDEPTID" jdbcType="VARCHAR" javaType="String" mode="IN"/>
<parameter property="EXECTIME" jdbcType="VARCHAR" javaType="String" mode="IN"/>
<parameter property="ECODE" jdbcType="INTEGER" javaType="Integer" mode="OUT"/>
<parameter property="EMSG" jdbcType="VARCHAR" javaType="String" mode="OUT"/>
</parameterType>
<!--parameterType-->
<procedure id="EditRoomStatus" parameterType="RoomStatusParameters">
{call prc_pacs_commitexecinpatient( ?, ?, ?, ?, ?, ?, ?)}
</procedure>
</statements>
</sqlMap>

存储过程
create or replace procedure prc_pacs_CommitExecInpatient(
orderID in varchar2, --HISSheetID
itemID in varchar2, --ProjectID
operID in varchar2, --操作员工号
execDeptID in varchar2, --执行科室编码
execTime in varchar2, -- 执行时间 yyyy-MM-dd hh24:mi:ss
ecode out integer,
emsg out varchar2)
is
begin
ecode:=1; --执行成功返回1
emsg:='神经病';
end prc_pacs_CommitExecInpatient;


捕捉到 IBatisNet.Common.Exceptions.IBatisNetException
Message=Could not retrieve parameters for the store procedure named {call prc_pacs_commitexecinpatient( ?, ?, ?, ?, ?, ?, ?)}
Source=IBatisNet.Common
StackTrace:
在 IBatisNet.Common.Utilities.DBHelperParameterCache.DeriveParameters(IDbProvider provider, IDbCommand command)
在 IBatisNet.Common.Utilities.DBHelperParameterCache.InternalDiscoverSpParameterSet(IDalSession session, String spName, Boolean includeReturnValueParameter)
在 IBatisNet.Common.Utilities.DBHelperParameterCache.DiscoverSpParameterSet(IDalSession session, String spName, Boolean includeReturnValueParameter)
在 IBatisNet.Common.Utilities.DBHelperParameterCache.GetSpParameterSet(IDalSession session, String spName, Boolean includeReturnValueParameter)
在 IBatisNet.Common.Utilities.DBHelperParameterCache.GetSpParameterSet(IDalSession session, String spName)
在 IBatisNet.DataMapper.Configuration.Statements.PreparedStatementFactory.DiscoverParameter(ISqlMapSession session)
在 IBatisNet.DataMapper.Configuration.Statements.PreparedStatementFactory.Prepare()
在 IBatisNet.DataMapper.Configuration.Sql.Static.ProcedureSql.BuildPreparedStatement(ISqlMapSession session, RequestScope request, String commandText)
在 IBatisNet.DataMapper.Configuration.Sql.Static.ProcedureSql.GetRequestScope(IMappedStatement mappedStatement, Object parameterObject, ISqlMapSession session)
在 IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForObject(ISqlMapSession session, Object parameterObject, Object resultObject)
在 IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForObject(ISqlMapSession session, Object parameterObject)
在 IBatisNet.DataMapper.SqlMapper.QueryForObject(String statementName, Object parameterObject)
在 WebApplication1.Service.HisService.UserInfoService.updateMFundByProcedure() 位置 E:\testibatis\WebApplication1\WebApplication1\Service\HisService\UserInfoService.cs:行号 44
InnerException: System.Reflection.TargetInvocationException
Message=调用的目标发生了异常。
Source=mscorlib
StackTrace:
在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
在 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
在 System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
在 System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args)
在 IBatisNet.Common.Utilities.DBHelperParameterCache.DeriveParameters(IDbProvider provider, IDbCommand command)
InnerException: System.Data.OracleClient.OracleException
Message=ORA-00911: 无效字符
ORA-06512: 在 "SYS.DBMS_UTILITY", line 114
ORA-06512: 在 line 1

Source=System.Data.OracleClient
ErrorCode=-2146232008
Code=911
StackTrace:
在 System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
在 System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
在 System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(Boolean needRowid, OciRowidDescriptor& rowidDescriptor)
在 System.Data.OracleClient.OracleCommand.ExecuteNonQuery()
在 System.Data.OracleClient.OracleCommandBuilder.ResolveName(OracleCommand command, String nameToResolve, String& schema, String& packageName, String& objectName, String& dblink)
在 System.Data.OracleClient.OracleCommandBuilder.DeriveParametersFromStoredProcedure(OracleConnection connection, OracleCommand command)
在 System.Data.OracleClient.OracleCommandBuilder.DeriveParameters(OracleCommand command)
InnerException:
...全文
694 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,978

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧