Welcome to Sign in | Help

Re: begin tran sql server 2000

  •  03-06-2008, 1:28 AM

    Re: begin tran sql server 2000

    Alex:

    nu pot modifica absolut nimic in procedura2....regulile firmei....exista o alta solutie?

    multumesc

    alex.


    O solutie buna e cea propusa de andrei
    ...
    begin tran

    DECLARE @RC int

    EXECUTE @RC = procedura2

    if @RC = 0

    begin

    Rollback tran

    return
    ...

    dar pleaca de la premisa ca procedura2 intoarce un INT care reflecta daca procedura sa executat sau nu cu succes. Banuiesc ca aceasta solutie ar pp. modificarea procedurii 2 fapt care nu se doreste.

    Ceea ce vrei tu ar putea fi denumita de un coleg ca o "ciobănie" sau un "oltenism".
    O posibila ideea ar fi sa verifici daca sunt prezente in baza de date anumite rezultate (valori, inregistrari, etc.) care sa indice daca procedura2 sa executat cu succes sau nu.

    De exemplu, putem pp. ca procedura2 daca este executata cu succes atunci rezultatul va fi ca in tabela A sunt adaugate inregistrari (minim o inregistrare). Daca nu, atunci nr. inregistrarilor din A va râmâne nemodificat dupa execuţia procedurii 2.
    ...
    begin tran

    DECLARE @nr_inregistrari_inainte INT
    DECLARE @nr_inregistrari_dupa INT
    SET @nr_inregistrari_inainte = (SELECT COUNT(*) FROM A)

    EXEC procedura2

    SET @nr_inregistrari_dupa = (SELECT COUNT(*) FROM A)

    if @nr_inregistrari_inainte = @nr_inregistrari_dupa

    begin

    Rollback tran

    return
    ...

    Evident tb. avut in vedere faptul ca aplicatia ruleaza intr-un mediu multutilizator ...

View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems