나는 다음과 같은 오류가 발생합니다 :스프링 배치 StoredProcedureItemReader
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: L'index 0 du paramètre de sortie n'est pas valide.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
at com.microsoft.sqlserver.jdbc.SQLServerCallableStatement.getterGetParam(SQLServerCallableStatement.java:354)
at com.microsoft.sqlserver.jdbc.SQLServerCallableStatement.getObject(SQLServerCallableStatement.java:659)
at org.springframework.batch.item.database.StoredProcedureItemReader.openCursor(StoredProcedureItemReader.java:214)
... 18 more
저장 프로 시저 오류에 대한 책임이 테이블을 만들 명령이 포함되어 있습니다.
저장 프로 시저 :
ALTER PROCEDURE [dbo].[TEST]
@orgKeyParam bigint
AS
BEGIN
CREATE TABLE #tmpPatients (
programID bigint NOT NULL)
drop table #tmpPatients;
SELECT last_name from patient;
END
StoredProcedureItemReader 구성 : 저장 프로 시저 또는 사용자가 설정 한 방법을 보지 않고
<bean id="DBReader"
class="org.springframework.batch.item.database.StoredProcedureItemReader">
<property name="dataSource" ref="dataSource2" />
<property name="procedureName" value="[${sql.RPMDBName}].dbo.Test" />
<property name="fetchSize" value="50" />
<property name="parameters">
<list>
<bean class="org.springframework.jdbc.core.SqlParameter">
<constructor-arg index="0" value="orgKeyParam" />
<constructor-arg index="1">
<util:constant static-field="java.sql.Types.INTEGER" />
</constructor-arg>
</bean>
</list>
</property>
<property name="rowMapper" ref="dataRowMapper" />
<property name="preparedStatementSetter" ref="preparedStatementSetter" />
</bean>
<bean id="preparedStatementSetter"
class="org.springframework.batch.core.resource.ListPreparedStatementSetter" scope="step">
<property name="parameters">
<list>
<value>1</value>
</list>
</property>
</bean>
안녕하세요, 저장 프로 시저와 배치 구성을 추가했습니다. 어떤 생각이 잘못된 것입니까? –
저는 SQL Server (또는 저장 프로 시저) 전문가는 아니지만 사물에 따라 저장 프로 시저에서 커서를 반환하지 않습니다. https://msdn.microsoft.com/en-us/library/ ms188655.aspx –