1
のために定義されていませんでした。私は間違いがない。私は次のエラーを取得する手順エラー:私は、このストアドプロシージャを呼び出すときに、パラメータアウトは、ストアドプロシージャ
procedure [dbo].[pTest]
@ReportData varbinary(max) out
,@Date varchar(max) =null
as
begin
select * from test
end
に別のパラメータを追加するときしかし:私は@Date
パラメータを削除し、それに応じてコードを変更した場合
2016-10-06 15:50:16.283 DEBUG 32604 --- [ main] c.m.s.jdbc.internals.SQLServerException : *** SQLException:SQLServerCallableStatement:9 com.microsoft.sqlserver.jdbc.SQLServerException: Parameter out was not defined for stored procedure pTest. Parameter out was not defined for stored procedure pTest.
2016-10-06 15:50:16.289 DEBUG 32604 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : Error preparing CallableStatement [pTest]
com.microsoft.sqlserver.jdbc.SQLServerException: Parameter out was not defined for stored procedure pTest.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191) ~[sqljdbc-4.2.jar:na]
、私はエラーを取得していません。 @Date
パラメータを2つのパラメータに追加すると、エラーが再び表示されます。どうして?問題を発見
@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional(transactionManager="transactionManager")
public class TestRepositoryTest {
@Autowired
private TestRepository testRepository;
@Test
public void testGet() throws SQLException {
byte[] blob = testRepository.get("hi");
//error occurs
}
}
私はのjTDSを使用している場合は、私がエラー 'プロシージャまたは関数 'PTESTが' パラメータ期待し得る '@ReportData'、Iをsupplied.'なかったので、これを変更しますSQL Server 2005を使用していますが、SQL Server 2008でも同じ動作をしているようです。 – James
パラメータの順序をインポートすることができます。パラメータの順序を狂わせて試してみましたので、 '@NamedStoredProcedureQuery '定義、またはストアドプロシージャDDLの' OUT'秒? –
'@ NamedStoredProcedureQuery'で' OUT'が最初になるように順番を変更しました。私はまだ同じエラーが表示されます。私はこの問題の解決策を見つけ出しました。私はそれを投稿しますが、OPのコードがうまくいかない理由を理解することは素晴らしいことです。 – James