未为存储过程定义参数@p_appraisal_period_id sp_StatusReport_GoalCompletionPercentageBySup

时间:2017-09-18 12:07:32

标签: java sql-server jdbc

我正在JAVA中准备一个可调用的语句来在SQL服务器上执行存储过程:

CallableStatement st = connection.prepareCall ({ call sp_StatusReport_GoalCompletionPercentageBySup ( ? ) });
st.setInt(paramName, 0);  //paramName=@p_appraisal_period_id

但是我收到以下错误:

  

com.microsoft.sqlserver.jdbc.SQLServerException:未为存储过程sp_StatusReport_GoalCompletionPercentageBySup定义参数@p_appraisal_period_id。       在com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:227)       在com.microsoft.sqlserver.jdbc.SQLServerCallableStatement.findColumn(SQLServerCallableStatement.java:1396)       在com.microsoft.sqlserver.jdbc.SQLServerCallableStatement.setInt(SQLServerCallableStatement.java:2579)       在com.abzooba.uba.datasources.JDBCDataSource.prepareCallableStatement(JDBCDataSource.java:241)       在com.abzooba.uba.datasources.JDBCDataSource.getResults(JDBCDataSource.java:102)       在com.abzooba.uba.dataservices.SPDataService.getResults(SPDataService.java:56)       在com.abzooba.uba.application.AbstractWidget.getResults(AbstractWidget.java:71)       在com.abzooba.uba.application.Page.getResults(Page.java:165)       在com.abzooba.uba.application.Application.getResults(Application.java:463)       在com.abzooba.uba.application.ApplicationManager.getResults(ApplicationManager.java:347)       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)       at java.lang.reflect.Method.invoke(Unknown Source)       at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory $ 1.invoke(ResourceMethodInvocationHandlerFactory.java:81)       at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher $ 1.run(AbstractJavaResourceMethodDispatcher.java:144)       at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)       at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider $ ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160)       at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)       在org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)       在org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)       在org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)       在org.glassfish.jersey.server.ServerRuntime $ 2.run(ServerRuntime.java:326)       在org.glassfish.jersey.internal.Errors $ 1.call(Errors.java:271)       在org.glassfish.jersey.internal.Errors $ 1.call(Errors.java:267)       在org.glassfish.jersey.internal.Errors.process(Errors.java:315)       在org.glassfish.jersey.internal.Errors.process(Errors.java:297)       在org.glassfish.jersey.internal.Errors.process(Errors.java:267)       在org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)       在org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)       在org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)       在org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)       在org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)       在org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)       在org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)       在org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)       在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)       在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)       在org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)       在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)       在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)       在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)       在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)       at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:632)       在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)       at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)       在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)       在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)       在org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110)       在org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)       at org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:785)       在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1425)       在org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)       at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)       at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)       at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)       在java.lang.Thread.run(未知来源)   com.abzooba.uba.datasources.DataSourceException:未为存储过程sp_StatusReport_GoalCompletionPercentageBySup定义参数@p_appraisal_period_id。       在com.abzooba.uba.datasources.JDBCDataSource.getResults(JDBCDataSource.java:154)       在com.abzooba.uba.dataservices.SPDataService.getResults(SPDataService.java:56)       在com.abzooba.uba.application.AbstractWidget.getResults(AbstractWidget.java:71)       在com.abzooba.uba.application.Page.getResults(Page.java:165)       在com.abzooba.uba.application.Application.getResults(Application.java:463)       在com.abzooba.uba.application.ApplicationManager.getResults(ApplicationManager.java:347)       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)       at java.lang.reflect.Method.invoke(Unknown Source)       at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory $ 1.invoke(ResourceMethodInvocationHandlerFactory.java:81)       at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher $ 1.run(AbstractJavaResourceMethodDispatcher.java:144)       at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)       at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider $ ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160)       at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)       在org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)       在org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)       在org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)       在org.glassfish.jersey.server.ServerRuntime $ 2.run(ServerRuntime.java:326)       在org.glassfish.jersey.internal.Errors $ 1.call(Errors.java:271)       在org.glassfish.jersey.internal.Errors $ 1.call(Errors.java:267)       在org.glassfish.jersey.internal.Errors.process(Errors.java:315)       在org.glassfish.jersey.internal.Errors.process(Errors.java:297)       在org.glassfish.jersey.internal.Errors.process(Errors.java:267)       在org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)       在org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)       在org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)       在org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)       在org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)       在org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)       在org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)       在org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)       在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)       在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)       在org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)       在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)       在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)       在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)       在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)       at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:632)       在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)       at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)       at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)       在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)       在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)       在org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110)       在org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)       at org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:785)       在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1425)       在org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)       at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)       at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)       at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)       在java.lang.Thread.run(未知来源)

我从连接字符串中获取数据库元数据:

DatabaseMetaData dbMetaData = connection.getMetaData();
if (dbMetaData != null){
        ResultSet rs = dbMetaData.getProcedureColumns (null, null, sp_name.toUpperCase(), "%");
        while (rs.next())
            paramInfo.put(rs.getString(4), rs.getInt(6));
        rs.close();
    }

它返回@p_appraisal_period_id

0 个答案:

没有答案