Из SQL Server (не уверен, о других СУБД), Вы можете вызвать несколько хранимых процедур внутри транзакции.
BEGIN TRAN
EXEC StoredProc1
EXEC StoredProc2
COMMIT TRAN
Вы можете добавить код возврата к хранимой процедуре, чтобы проверить, следует ли запустить ХП 2, если ХП-не удался
EDIT: Чтобы проверить код возврата вы можете сделать что-то вроде следующие. Это запустит первую сохраненную процедуру. Если он возвращает 0, то он запускает второй. Если второй возвращает 0, то он совершает транзакцию. Если какой-либо возвращает не 0, то оно будет откатить транзакцию
DECLARE @ReturnValue INT
BEGIN TRAN
EXEC @ReturnValue = StoredProc1
IF @ReturnValue = 0
BEGIN
EXEC @ReturnValue = StoredProc2
IF @ReturnValue = 0
BEGIN
COMMIT
END
ELSE
BEGIN
ROLLBACK
END
END
ELSE
BEGIN
ROLLBACK
END
попробуйте поймать, что Грегс отвечает просто более простым способом. ? он проверяет каждое возвращаемое значение и останавливается. если один dident возвращает 0. thaks для ответа !. – saadan
теперь я получил его, чтобы работать с уловкой try, но если я сделаю это неудачно, я могу отправить строки, полученные номером, или что-то в этом роде, чтобы увидеть, когда он терпит неудачу. – saadan
Вы можете отправить все, что вам нужно, из улова - немного отличающегося от ответа Грегса - скажите, что вам нужно добавить третью проку, если бы ... ответ остался бы довольно сложным. также, если это не удастся, никакие строки не будут затронуты - вы откатываете его обратно ...? – Paddy