Stored Procedure & Tanscation

09/10/2008 - 11:36 von Maik Weiß | Report spam
Hallo NG,

ich habe ein Problem bzw. Frage zu folgendem
Vorgehen:

ich rufe aus eine Programm (mit .NET entwickelt)
eine Stored Procedure (SP) auf.
In dieser Procedure wird eine weitere Procedure
innerhalb einer Transaktion aufgerufen.

ALTER PROCEDURE [dbo].[test]

@persID AS SMALLINT,
@custID as INTEGER

AS
BEGIN
SET NOCOUNT ON

BEGIN TRANSACTION delCustomer

DELETE FROM tblCustomers
WHERE ID_cust = @custID

EXECUTE spWrite_CustomerHistory @persID, @custID, 23 --> 23=Kunde gelöscht

COMMIT TRANSACTION delCustomer

END

Problem besteht jetzt darin, dass wenn in der aus der SP mittels Execute
aufgerufenen "spWrite_CustomerHistory"-SP ein Fehler auftritt, der
Datensatz dann trotzdem gelöscht bleibt, obwohl sich beide Aufrufe in einer
Transaktion befinden.

Was mache ich hier falsch bzw. wie kann man das lösen, dass der Datensatz
nicht gelöscht wird, wenn die andere - aus der Haupt-SP aufgerufene - SP
einen Fehler wirft?

Gruß
Maik
 

Lesen sie die antworten

#1 Holger Vorberg
09/10/2008 - 12:17 | Warnen spam
Was mache ich hier falsch bzw. wie kann man das lösen, dass der Datensatz
nicht gelöscht wird, wenn die andere - aus der Haupt-SP aufgerufene - SP
einen Fehler wirft?



evtl. so:

BEGIN TRANSACTION delCustomer
begin try
DELETE FROM tblCustomers WHERE ID_cust = @custID
EXECUTE spWrite_CustomerHistory @persID, @custID, 23 --> 23=Kunde
gelöscht
COMMIT TRANSACTION delCustomer
end try
begin catch
ROLLBACK TRANSACTION delCustomer
end catch

MfG
Holger Vorberg

Ähnliche fragen