2016-11-10 7 views
0

У меня есть доступ к хранимой процедуре на сервере SQL, который имеет один параметр, и я могу легко запустить его на SQL клиента следующим образом:Вызов хранимой процедуры MSSQL в Java

exec sp_name "2016/11/01" 

Теперь я хочу сделать то же самое в java.

PreparedStatement ps = conn.prepareStatement("sp_name ?"); 
ps.setString(1, "2016/11/01"); 
ResultSet rs = ps.executeQuery(); 

В rs можно увидеть имена столбцов, но нулевая строка возвращается. Я думаю, что это из-за параметра хранимой процедуры. Я что-то упустил?

+0

Какой тип одного параметра? В любом случае, я предлагаю вам использовать [CallableStatement] (https://docs.oracle.com/javase/7/docs/api/java/sql/CallableStatement.html). Кроме того, проблема может быть в самом SP ... PS: лучше использовать форматирование форматирования ISO для дат, использовать форматы «YYYYMMDD» или «YYYY-MM-DD» в вызовах SQL Server. –

+0

Ну, я не знаю тип, потому что у меня нет доступа к источнику SP. –

+0

Возможно, попробуйте параметр '(java.sql.) Date'? –

ответ

0

Вот код, который работал в конце концов:

String date= "2016/11/01" 
String queryString "exec sp_dmp_pub_status ?"; 
PreparedStatement ps = conn.prepareStatement(queryString);   
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd"); 
Date parsed = format.parse(date); 
java.sql.Date sqlDate = new java.sql.Date(parsed.getTime()); 
ps.setDate(1, sqlDate);   
ResultSet rs = ps.executeQuery(); 
Смежные вопросы