2016-08-03 2 views
0

как выполнить хранимую процедуру. процедура работает, когда я исполняю его непосредственно из SQL, но она не работает, когда я делаю это с моей таблеткикак выполнить хранимую процедуру от подготовки

String itemshelf = DBshelf;// edittext for putting in values on set 
String itemcard = DBcard;// edittext for putting in values on where 
PreparedStatement preparedStatement = con.prepareStatement("EXEC [dbo].[spUpd_Location]"); 
         preparedStatement.executeUpdate(); 

моя хранимая процедура

ALTER PROCEDURE [dbo].[spUpd_Location] 
    @itemshelf nvarchar(1000)=NULL 
, @itemcard nvarchar(1000)=NULL 
AS 
SET NOCOUNT ON 
UPDATE PS 
SET [ShelfNumber][email protected] 
FROM [file].[ItemPart] PS 
JOIN [file].[Item] P ON P.[id] = PS.[id] 
where [ItemNumber][email protected] 
+0

Каковы ошибки? executeUpdate выглядит неправильно, поскольку это не прямое обновление –

+0

У меня нет ошибок, но он не меняет значения в базе данных. –

+0

@itemcard имеет значение NULL, поэтому тест равенства является ложным для всех строк, вызывает его с двумя параметрами? (Если вы хотите, чтобы равенство с нулевым использованием IS NULL) –

ответ

1

Ваша хранимая процедура ожидает два аргумента, которые вам нужно будет предоставить подготовленное заявление. Ваш SQL нуждается в заполнителях для аргументов, и аргументы должны быть установлены на объекте PreparedStatement. Ваш код будет выглядеть примерно так:

String itemshelf = DBshelf;// edittext for putting in values on set 
String itemcard = DBcard;// edittext for putting in values on where 
PreparedStatement preparedStatement = con.prepareStatement("EXEC [dbo].[spUpd_Location] ?, ?;"); 
preparedStatement.setString(1, itemshelf); 
preparedStatement.setString(2, itemcard); 
preparedStatement.executeUpdate(); 
+0

i получение Индекс недопустимых параметров 1 –

+0

В инструкции SQL отсутствовала открытая скобка имени хранимой процедуры (отредактированная для исправления), которая может быть проблемой. –

+0

Вот аналогичный [вопрос] (http://stackoverflow.com/questions/6113674/how-do-i-execute-a-ms-sql-server-stored-procedure-in-java-jsp-returning-table- d) это может помочь. Кроме того, хранимая процедура не возвращает ничего, поэтому 'executeUpdate', вероятно, должен быть просто' execute'. –

Смежные вопросы