Avatar billede golyf Nybegynder
28. januar 2005 - 12:50 Der er 6 kommentarer og
1 løsning

Hjælp til error handling ønskes.

Her ses et af mine spæde forsøg tpå at bruge Stored Procedures i en SQL server:

ALTER PROCEDURE dbo.spPMDeleteOption
    @User varchar(50),
    @ErrorCode int = 0 OUTPUT
AS
    SET NOCOUNT ON

    BEGIN TRANSACTION
   
    Delete FROM tblPMXXXOptions WHERE [User] = @User
    SELECT @ErrorCode = @@ERROR
    IF @ErrorCode != 0 BEGIN
        ROLLBACK TRANSACTION
        RETURN @ErrorCode
    END
    COMMIT TRANSACTION
RETURN 0

I et svagt forsøg på at teste om min error handler virker, har jeg ændret tabel navnet fra tblPMOptions til tblPMXXXOptions. Her regnede jeg så med at få en fejl.
Jeg bruger VS.NET til at kode og debugge i og den giver følgende svar:
Running dbo."spPMDeleteOption" ( @User = gg, @ErrorCode = 10 ).

Invalid object name 'tblPMXXXOptions'.
Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing. Previous count = 0, current count = 1.
No rows affected.
(0 row(s) returned)
@ErrorCode = 10
@RETURN_VALUE =
Finished running dbo."spPMDeleteOption".

Hvad gør jeg forkert?
Avatar billede ldanielsen Nybegynder
28. januar 2005 - 13:34 #1
Du COMMIT'er selvom der er fejl. Prøv dette

ALTER PROCEDURE dbo.spPMDeleteOption
    @User varchar(50),
    @ErrorCode int = 0 OUTPUT
AS
    SET NOCOUNT ON

    BEGIN TRANSACTION
   
    Delete FROM tblPMXXXOptions WHERE [User] = @User
    SELECT @ErrorCode = @@ERROR
    IF @ErrorCode != 0
    BEGIN
        ROLLBACK TRANSACTION
        RETURN @ErrorCode
    END
    ELSE
    BEGIN
        COMMIT TRANSACTION
        RETURN 0
    END
Avatar billede golyf Nybegynder
28. januar 2005 - 13:37 #2
Har også prøvet din version i min panik. Dessuden så kig igen:
.......
        RETURN @ErrorCode <- Ved fejl stopper den her.
    END
    COMMIT TRANSACTION
RETURN 0

Hvis der går noget galt, så stopper min procedure jo på return.
Men tak for forsøget.
Avatar billede ldanielsen Nybegynder
28. januar 2005 - 14:00 #3
Jeg tror (ved det ikke) at det er fordi fejlen er så fatal. Prøv i stedet at fremkalde en fejl ved at update en felt der er index, det vil måske give et andet resultat.

Jeg havde overset det med return.
Avatar billede golyf Nybegynder
30. marts 2005 - 19:40 #4
Ups ... LD ... Føler jeg skylder dig lidt point.
Vil du ha', så sig til.
Sorry
Avatar billede ldanielsen Nybegynder
31. marts 2005 - 00:03 #5
Ja, hvis jeg hjalp dig?
Avatar billede golyf Nybegynder
31. marts 2005 - 07:08 #6
Ikke meget, men lidt. Uanset, skal du da ha' point for forsøget.
Avatar billede ldanielsen Nybegynder
31. marts 2005 - 08:25 #7
tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester