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

问题描述

xml文件<?xmlversion="1.0"encoding="utf-8"?><sqlMapnamespace="Maps"xmlns="http://ibatis.apache.org/mapping"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><alias><!--类的别名--><typeAliasalias="UserInfo"type="WebApplication1.Model.UserModel"/></alias><statements><parameterTypeid="RoomStatusParameters"class="Hashtable"><parameterproperty="ORDERID"jdbcType="VARCHAR"javaType="String"mode="IN"/><parameterproperty="ITEMID"jdbcType="VARCHAR"javaType="String"mode="IN"/><parameterproperty="OPERID"jdbcType="VARCHAR"javaType="String"mode="IN"/><parameterproperty="EXECDEPTID"jdbcType="VARCHAR"javaType="String"mode="IN"/><parameterproperty="EXECTIME"jdbcType="VARCHAR"javaType="String"mode="IN"/><parameterproperty="ECODE"jdbcType="INTEGER"javaType="Integer"mode="OUT"/><parameterproperty="EMSG"jdbcType="VARCHAR"javaType="String"mode="OUT"/></parameterType><!--parameterType--><procedureid="EditRoomStatus"parameterType="RoomStatusParameters">{callprc_pacs_commitexecinpatient(?,?,?,?,?,?,?)}</procedure></statements></sqlMap>存储过程createorreplaceprocedureprc_pacs_CommitExecInpatient(orderIDinvarchar2,--HISSheetIDitemIDinvarchar2,--ProjectIDoperIDinvarchar2,--操作员工号execDeptIDinvarchar2,--执行科室编码execTimeinvarchar2,--执行时间yyyy-MM-ddhh24:mi:ssecodeoutinteger,emsgoutvarchar2)isbeginecode:=1;--执行成功返回1emsg:='神经病';endprc_pacs_CommitExecInpatient;捕捉到IBatisNet.Common.Exceptions.IBatisNetExceptionMessage=Couldnotretrieveparametersforthestoreprocedurenamed{callprc_pacs_commitexecinpatient(?,?,?,?,?,?,?)}Source=IBatisNet.CommonStackTrace:在IBatisNet.Common.Utilities.DBHelperParameterCache.DeriveParameters(IDbProviderprovider,IDbCommandcommand)在IBatisNet.Common.Utilities.DBHelperParameterCache.InternalDiscoverSpParameterSet(IDalSessionsession,StringspName,BooleanincludeReturnValueParameter)在IBatisNet.Common.Utilities.DBHelperParameterCache.DiscoverSpParameterSet(IDalSessionsession,StringspName,BooleanincludeReturnValueParameter)在IBatisNet.Common.Utilities.DBHelperParameterCache.GetSpParameterSet(IDalSessionsession,StringspName,BooleanincludeReturnValueParameter)在IBatisNet.Common.Utilities.DBHelperParameterCache.GetSpParameterSet(IDalSessionsession,StringspName)在IBatisNet.DataMapper.Configuration.Statements.PreparedStatementFactory.DiscoverParameter(ISqlMapSessionsession)在IBatisNet.DataMapper.Configuration.Statements.PreparedStatementFactory.Prepare()在IBatisNet.DataMapper.Configuration.Sql.Static.ProcedureSql.BuildPreparedStatement(ISqlMapSessionsession,RequestScoperequest,StringcommandText)在IBatisNet.DataMapper.Configuration.Sql.Static.ProcedureSql.GetRequestScope(IMappedStatementmappedStatement,ObjectparameterObject,ISqlMapSessionsession)在IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForObject(ISqlMapSessionsession,ObjectparameterObject,ObjectresultObject)在IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForObject(ISqlMapSessionsession,ObjectparameterObject)在IBatisNet.DataMapper.SqlMapper.QueryForObject(StringstatementName,ObjectparameterObject)在WebApplication1.Service.HisService.UserInfoService.updateMFundByProcedure()位置E:testibatisWebApplication1WebApplication1ServiceHisServiceUserInfoService.cs:行号44InnerException:System.Reflection.TargetInvocationExceptionMessage=调用的目标发生了异常。Source=mscorlibStackTrace:在System.RuntimeMethodHandle._InvokeMethodFast(Objecttarget,Object[]arguments,SignatureStruct&sig,MethodAttributesmethodAttributes,RuntimeTypeHandletypeOwner)在System.RuntimeMethodHandle.InvokeMethodFast(Objecttarget,Object[]arguments,Signaturesig,MethodAttributesmethodAttributes,RuntimeTypeHandletypeOwner)在System.Reflection.RuntimeMethodInfo.Invoke(Objectobj,BindingFlagsinvokeAttr,Binderbinder,Object[]parameters,CultureInfoculture,BooleanskipVisibilityChecks)在System.Reflection.RuntimeMethodInfo.Invoke(Objectobj,BindingFlagsinvokeAttr,Binderbinder,Object[]parameters,CultureInfoculture)在System.RuntimeType.InvokeMember(Stringname,BindingFlagsbindingFlags,Binderbinder,Objecttarget,Object[]providedArgs,ParameterModifier[]modifiers,CultureInfoculture,String[]namedParams)在System.Type.InvokeMember(Stringname,BindingFlagsinvokeAttr,Binderbinder,Objecttarget,Object[]args)在IBatisNet.Common.Utilities.DBHelperParameterCache.DeriveParameters(IDbProviderprovider,IDbCommandcommand)InnerException:System.Data.OracleClient.OracleExceptionMessage=ORA-00911:无效字符ORA-06512:在"SYS.DBMS_UTILITY",line114ORA-06512:在line1Source=System.Data.OracleClientErrorCode=-2146232008Code=911StackTrace:在System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandleerrorHandle,Int32rc)在System.Data.OracleClient.OracleCommand.Execute(OciStatementHandlestatementHandle,CommandBehaviorbehavior,BooleanneedRowid,OciRowidDescriptor&rowidDescriptor,ArrayList&resultParameterOrdinals)在System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(BooleanneedRowid,OciRowidDescriptor&rowidDescriptor)在System.Data.OracleClient.OracleCommand.ExecuteNonQuery()在System.Data.OracleClient.OracleCommandBuilder.ResolveName(OracleCommandcommand,StringnameToResolve,String&schema,String&packageName,String&objectName,String&dblink)在System.Data.OracleClient.OracleCommandBuilder.DeriveParametersFromStoredProcedure(OracleConnectionconnection,OracleCommandcommand)在System.Data.OracleClient.OracleCommandBuilder.DeriveParameters(OracleCommandcommand)InnerException:

解决方案

时间: 2024-07-31 22:15:57

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

ibatis调用Oracle中的存储过程和function

一.调用存储过程 Oracle代码 procedure proc_pos_check(p_gtin  in varchar2,                            p_safe_code   in varchar2,                            p_in_sell_id  in varchar2,                            p_buy_id      in varchar2,                        

date格式-oracle DATE格式输出的问题

问题描述 oracle DATE格式输出的问题 insert employees set 入职日期=to_date('1990-03-05''yyyy-mm-dd') 这里出来的格式是:05-3月-90 请问为什么出来的是这样的格式呢?如果我要yyy-mm-dd格式该如何实现呢? 谢谢! 解决方案 SELECT to_char(to_date('1996-03-05''YYYY-MM-DD')'yyy-mm-dd') FROM DUAL 解决方案二: insert employees set 入

ibatis操作oracle中CLOB类型的值

问题描述 ibatis操作oracle中CLOB类型的值 页面我是用了Struts标签,ibatis需要操作oracle中的CLOB类型的数据,该怎么操作?ibatis配置文件中需要设置什么样的类型于其对应.java中的实体类我是不是需要定义成CLOB类型呢?> 解决方案 可以配置ParameterMap和ResultMap就可以方便的实现对LOB的读写了,而且不用去实现任何类.只需要配置就可以了. 如: 这是返回的Clob 这是参数里面包含CLob 解决方案二: 解决方案三: 解决方案四: 解

c# 从oracle中查询数据,设置时间参数问题,在线等

问题描述 c# 从oracle中查询数据,设置时间参数问题,在线等 各位大神,小弟刚接触c#时间不长,写了个程序,从界面上datatimepicker中取出时间,然后在c#代码的sql语句中设置时间参数,无论怎么设置要不就查不到数据,要不就是时间格式设置的不对,下面是代码 public DataTable QueryUsedMaterial(string classgroup, string beginTime, string endTime) { string sql_QueryMateria

c++输出到文件函数参数问题

问题描述 c++输出到文件函数参数问题 输出函数用了形参ofstream &fout,调用函数的时候实参写什么? void Data::GetYear(ofstream &fout) {fout<<year<<"-";} void Data::GetMonth(ofstream &fout) { fout << month << "-"; } void Data::GetDay(ofstream

与oracle紧密相关的unix/linux内核参数

        下面是几个与oracle紧密相关的unix/linux内核参数,在安装数据库的时候,一般都需要根据实际情况进行调整. Init.ora Parameter Kernel Parameter db_block_buffers shmmax, shmall db_files(maxdatafiles) nfile, maxfiles large_pool_size shmmax, shmall log_buffer shmmax, shmall processes nproc, se

如何把存储过程获取的数据输出到报表的html模板中

制作报表的html模板 <HTML> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <TITLE>报表模板</TITLE> <BODY> <TABLE BORDER="1" cellpadding="0" cellspacing="0"> &

oracle存储过程-Oracle存储过程 截取字符串循环执行动作 急急急急!

问题描述 Oracle存储过程 截取字符串循环执行动作 急急急急! create or replace procedure PROC_UPDATENEWSKW(newsid in number, kw in varchar2) is i number:=0; begin /** 1.查询标签表(jc_content_tag)是否有相同tag_name的标签,如果有则直接将此条记录的tag_id与newsid 插入jc_contenttag(新闻标签关联表)表/ select count() in

Ibatis往Oracle中插入字符串的时候提示插入的值对于列过大

问题描述 我现在使用Ibatis连接数据库,但是在用他往数据库里插入字符串的时候总是提示"ORA-01401:插入的值对于列过大".但是我数据库中相应字段设置的是varchar2(4000),已经是最大了.而且在用plSQL往里插入相同内容的时候是可以插入的.所以我怀疑是字符集的原因.现在我的环境如下:oracle的字符集是utf-8,客户端也被我用注册表的方法改成了AMERICAN_AMERICA.UTF8(原来是SIMPLIFIEDCHINESE_CHINA.ZHS16GBK),i