none
Procedure dentro de outra procedure, porem preciso pegar o valor de retorno da procedure e problema com transaction RRS feed

  • Pergunta

  • Ola pessoal
    1)
    eu tenho uma procedure A (SP_A) e uma procedure b (SP_B)
    A procedure SP_B é executada dentro da procedure SP_A
    porem a procedure SP_B tem um retorno, que é a confirmação se tudo ocorreu bem ou nao
    ela me retorna ErroN,ErroMsg
    eu preciso dessa informação para concluir a execução da procedure SP_A
    porem, como eu faco para pegar os valores de retorno da procedure SP_B?
    eu sei que consigo isso atraves de functions, porem a principio quero continuar com procedures
    é possivel isso, pegar os valores de uma procedure dentro da outra?
    as ultimas linhas de execução da procedure SP_B são
    .....
    FIM:
    IF @ErroN <> 0
    BEGIN
    SELECT @ErroN AS ErroN, @ErroMsg AS ErroMsg
    ROLLBACK TRANSACTION @Transaction
    END
    ELSE
    BEGIN
    SELECT 0 AS ErroN, @ChqID AS ErroMsg
    COMMIT TRANSACTION @Transaction
    END

    talves isso deixe mais claro

    2)
    a procesure SP_A tem um transaction e a procedure SP_B tem outro
    crie os transaction assim na SP_A
    SET @Transaction = 'SP_A'
    BEGIN TRANSACTION @Transaction
    ...
    ROLLBACK TRANSACTION @Transaction
    ...
    COMMIT TRANSACTION @Transaction

    e na SP_B assim
    SET @Transaction = 'SP_B'
    BEGIN TRANSACTION @Transaction
    ...
    ROLLBACK TRANSACTION @Transaction
    ...
    COMMIT TRANSACTION @Transaction

    porem a SP_B esta cancelando o transaction da SP_A
    e tenho o seguinte erro

    Msg 6401, Level 16, State 1, Procedure SPChqConvertSqe, Line 97
    Cannot roll back ChqConvertSqe. No transaction or savepoint of that name was found.
    Msg 266, Level 16, State 2, Procedure SPChqConvertSqe, Line 0
    Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing. Previous count = 1, current count = 2.
    Msg 266, Level 16, State 2, Procedure SPChqDbtDescrInsere, Line 0
    Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing. Previous count = 0, current count = 1.

    e eu nao posso tirar o transaction da SP_B pq ela é executada fora da procedure SP_A

    tem como eu executar 2 transaction um dentro do outro?


    T+ pessoal
    Falow


    sábado, 10 de março de 2007 15:07

Todas as Respostas

  • cara pode explicar melhor porque da ideia de abrir transacoes aninhadas ?, assim pode ser que tenha outra solucao.

     

    Abs;

    segunda-feira, 12 de março de 2007 10:15
  • como assim transaçoes alinhadas?

    o problema é, que essa procedure funciona como um pedaco da logica
    e pode ocorrer diversos erros
    entao nao tem como!
    o que eu to pensando em fazer é
    Criar uma com Transacao e outra sem
    nao é la aquelas coisas de solucao, porem, é o que to vendo de fazer

    falow Marcelo
    T+ e obrigado
    segunda-feira, 12 de março de 2007 15:21