[TROUBLESHOOTING]奇怪的【索引中丢失 IN 或 OUT 参数】

JDeveloper版本11.1.2.0.0


1,现象

1)ADF Viewobjct中定义变量bvSuperUser,查询中Where子句如下:

 WHERE :bvSuperUser = 'Y'


2)部署运行报错: 索引中丢失  IN 或 OUT 参数 (Missing IN or OUT parameter at index:: 1)

部分错误信息如下:

<2014-9-12 下午04时34分05秒 CST> <Warning> <oracle.adf.controller.faces.lifecycle.Utils> <BEA-000000> <ADF: Adding the following JSF error message: 索引中丢失  IN 或 OUT 参数:: 1
java.sql.SQLException: 索引中丢失  IN 或 OUT 参数:: 1
        at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:1890)
        at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3747)
        at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3806)
        at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1667)
        at weblogic.jdbc.wrapper.PreparedStatement.executeQuery(PreparedStatement.java:135)
        at oracle.jbo.server.ViewObjectImpl.getQueryHitCount(ViewObjectImpl.java:4840)
        at oracle.jbo.server.ViewObjectImpl.getQueryHitCount(ViewObjectImpl.java:4751)
        at oracle.jbo.server.QueryCollection.getEstimatedRowCount(QueryCollection.java:4011)
... ...
<span>	</span>at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111)
        at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
        at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
        at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94)
        at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161)
        at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)


2,解决方案检查ViewObject的XML文件,对比发现变量定义有一个属性Kind设置为viewcriteria。

<Variable
    Name="bvUserId"
    Kind="where"
    Type="java.lang.Integer">
  </Variable>
  <Variable
    Name="bvSuperUser"
    Kind="viewcriteria"
    Type="java.lang.String"/>

将Kind修改为where后,程序运行正常。


其实,Kind对应Wizard中的Required属性,选中时为where,未选中为viewcriteria。变量被使用在where子句中时,ADF要求变量必须有值。变量被使用在View Criteria中时,由于VC可以不被使用,所以变量可以不需要有值。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值