В моем пакете SP содержатся инструкции DELETE и INSERT INTO. Если DELETE-оператор успешен, но INSERT INTO не делает, JAVA будет смотреть только на первый оператор и пришел к выводу, что весь SP был успешно выполнен, что может быть неправильным.JAVA вызов хранимой процедуры с оператором удаления и вставки
Как я могу выполнить более одного оператора и получить исключение в JAVA, если только один из операторов завершился с ошибкой. Я был опробован с помощью TRY-CATCH в SQL, но все закончилось, что оператор all был выполнен правильно, потому что первый оператор был успешным.
Это является MS SQL 2008 Database
ALTER PROCEDURE [testing]
@bikes varchar(8000),
@groupw varchar(4),
@name char(6)
AS
BEGIN
DELETE CP_customer_kngr_corr_s WHERE knid in ('blue')
DECLARE @pos INT
DECLARE @len INT
DECLARE @value varchar(8000)
set @pos = 0
set @len = 0
set @bikes= @bikes +','
WHILE CHARINDEX(',', @bikes, @pos)>0 BEGIN
set @len = CHARINDEX(',', @bikes, @pos+1) - @pos
set @value = SUBSTRING(@bikes, @pos, @len)
INSERT INTO [bikes]
([bikes])
VALUES
(@value)
set @pos = CHARINDEX(',', @bikes, @[email protected]) +1
END
END
Что вы подразумеваете под _ «JAVA будет смотреть только на первое утверждение и заключить, что весь SP был успешно выполнен» _? Вы, вероятно, неправильно интерпретируете результаты. Пожалуйста, покажите, как вы вызываете процедуру с Java, и как вы заключаете, что был выполнен только первый оператор. Вероятно, вам нужно добавить 'SET NOCOUNT ON' в вашу хранимую процедуру или вам нужно перебрать ** все ** результаты, возвращаемые драйверу JDBC. –