Inquiridor
Tratando erros em Stored Procedure

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
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
-
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?
-
-