2009-12-16 3 views
0

jdbc로이 저장 프로 시저를 호출하고 싶습니다.탈출하는 방법? jdbc 저장 프로 시저 호출의 문자

sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all" 

JDBC는 다음을 생각합니까? 인수에 대한 자리 표시 자입니다. 사실 그것은 SP가 테이블 이름을 넣기 위해 사용합니다. 저장 프로 시저를 호출하려면 어떻게해야합니까? 나는 이것을 시도 :

CallableStatement call = jdbcConnection.prepareCall("call sp_msforeachtable(?)"); 
call.setString(1, "\"ALTER TABLE ? NOCHECK CONSTRAINT all\""); 
call.executeUpdate(); 

그리고 '@ P0'근처에 구문 오류가 발생합니다. 나는 '@ P0'이?라고 생각한다. 이 SP에 어떻게 전화 할 수 있습니까? SQL Server 2008 BTW를 사용하고 있습니다.

답변

1

?이 테이블 이름으로 사용된다고 가정하면 Statement.executeUpdate()을 호출하기 전에 실제 테이블 이름을 제공해야합니다. 이 시점에서 JDBC 드라이버는 데이터베이스에 실제로 문을 실행하도록 지시하므로 모든 매개 변수를 바인딩해야합니다.

은 아마 당신이 쓰는 의미 :

CallableStatement call = jdbcConnection.prepareCall("call sp_msforeachtable(?)"); 
call.setString(1, "AnActualTableName"); 
call.executeUpdate(); 

또는 어쩌면 당신은이를 작성하는 의미 :

CallableStatement call = jdbcConnection.prepareCall("call sp_msforeachtable(\"ALTER TABLE ? NOCHECK CONSTRAINT all\")"); 
call.setString(1, "AnActualTableName"); 
call.executeUpdate(); 

나는 sp_msforeachtable()가 어떻게해야 정확히 모르겠지만, 알 수 있습니까 전화하기 전에 모든 매개 변수의 값을 제공해야합니다. executeUpdate()