none
Tratando erros em Stored Procedure RRS feed

  • Pergunta

  • Fala Pessoas,

     

    Estou com o seguinte problema.

    Tenho uma Stored Procedure que possui dois parâmetros de saída(output), um que retorna um codigo de erro e outro que retorna a descrição do erro.

    Está montada da seguinte forma.

     

    Create Procedure st......(@CodErro int output,@DescErro varchar(100) output)

     

    as

    bla bla bla bla bla b

     

    Exec stTesteblablabla(10,20,20)

     

    if @@Error <> 0

    Begin

    Set @CodErro=1

    Set @DescErro = 'Ocorreu um erro ao atualizar....bla bla bla'

    goto erro

    End

     

     

    erro:

    return 1

     

    O que acontece é o seguinte, se eu uso o provider "SQLOLEDB", ele me retorna o erro nos meus parâmetros na boa, agora onde trabalho utilizamos ODBC,"Provider=MSDASQL", então se der erro, ele estoura em erro e zera as variáveis de saída, alguem sabe me dizer como contornar isso?

     

    Eu testei trocando o provider pra SQLOLEDB e o sql server me retornou o erro direitinho, só com esse bendito MSDASQL que não funfa.

     

    Alguem tem alguma idéia?

     

    Obrigado

    segunda-feira, 29 de outubro de 2007 23:32

Todas as Respostas

  • Olá Clodo,

     

    Qual é a mensagem de erro apresentada? Se for o caso, não trate o erro e deixe o SQL apresentar o erro original. Depois poste-o aqui para que possamos verificar.

     

    Um abraço

    Nilton Pinheiro

    www.mcdbabrasil.com.br

     

     

    terça-feira, 30 de outubro de 2007 00:49
  • Clodoaldo,

     

    É muito comum este tipo de problema ocorrer por se trata de provider de conexão com banco de dados de diferentes formas de acesso, quando se utiliza o SQLOLEDB, na verdade você esta fazendo a conexão através de driver OLEDB para banco de dados SQL Server, esta driver é nativo de Windows, sendo assim, trabalha da forma que o sistema operacional entende.

     

    Já MSDASQL é instalado em conjunto com alguma versão do SQL Server, por se tratar de um driver de acesso somente a dados existente ao SQL Server, muitas vezes poderá apresentar dificuldades em realizar uma interpretação de algum tipo de operação que venha a ser realizada.

     

    Em várias aplicações que desenvolvi aqui na empresa, já passei por estes problemas, e realmente tivemos que fazer algumas adaptações, como também em algumas situações deixar o próprio SQL Server realizar o tratamento de erro!!!

     

    Bom, gostaria de saber qual é a versão do SQL Server que você esta utilizando?

    terça-feira, 30 de outubro de 2007 10:22
  • Amigo, obrigado pela resposta.

    O SQL SERVER é 2000.

     

    terça-feira, 30 de outubro de 2007 22:23
  • Clodoaldo,

     

    Bom agora se já sabemos a versão do seu SQL Server, qual é o componente de acesso a banco de dados que a sua aplicação esta utilizando?

    quarta-feira, 31 de outubro de 2007 10:44