Usuário com melhor resposta
Personalizar erros no sql server

Pergunta
-
tenho a seguinte stored procedure
Code SnippetCREATE PROCEDURE dbo.stp_incluir_dados
@Ind1 VARCHAR(20),
@Ind2 VARCHAR(20),
@CodTradeType VARCHAR(10),
@Sinal INT,
@Westminster VARCHAR(1),
@Retorno INT OUTPUTAS
SET NOCOUNT ON
IF NOT EXISTS(SELECT cod_Trade_Type FROM ils_cad_trade_type WHERE Ind1 LIKE @Ind1 AND Ind2 LIKE @Ind2)
AND NOT EXISTS(SELECT cod_Trade_Type FROM ils_cad_trade_type WHERE cod_Trade_Type = @CodTradeType)
BEGIN
INSERT INTO ils_cad_trade_type
(
Ind1,
Ind2,
cod_Trade_Type,
Sinal,
Westminster
)
VALUES
(
@Ind1,
@Ind2,
@CodTradeType,
@Sinal,
@Westminster
)
ENDELSE
BEGIN
'Erro 1
END
IF (@Sinal = 1)
SET @Sinal = -1
ELSE
SET @Sinal = 1IF NOT EXISTS(SELECT cod_Trade_Type FROM ils_cad_trade_type WHERE Ind1 LIKE @Ind2 AND Ind2 LIKE @Ind1)
AND NOT EXISTS(SELECT cod_Trade_Type FROM ils_cad_trade_type WHERE cod_Trade_Type LIKE @CodTradeType)
BEGIN
INSERT INTO ils_cad_trade_type
(
Ind1,
Ind2,
cod_Trade_Type,
Sinal,
Westminster
)
VALUES
(
@Ind2,
@Ind1,
@CodTradeType,
@Sinal,
@Westminster
)
ENDELSE
BEGIN
'Erro 2
END
IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
SET @Retorno = -10
ELSE
SET @Retorno = 10GO
gostaria de fazer o seguinte:
na primeira condição se ela for falsa então disparar o Erro 1
e na segunda se ela for falsa disparar o Erro2, onde eu consiga recuperar essas mensagens ou códigos(como eu estou fazendo com a variável @Retorno) de erro para eu exiber em um alert na aplicação.
Respostas
-
Boa Tarde,
Seria interessante que ao invés de você tratá-las como "erros" você as considerasse fluxos de aplicação, ou seja, determinadas condições (que não necessariamente são erros) foram atendidas. No código "Erro 1", você criaria determinadas variáveis, atribuiria valores de "erro" para essas variáveis e dispararia essas variáveis para a aplicação seja através de um ResultSet (SELECT), através de um parâmetro (Output Parameter) ou através de um retorno (RETURN).
Não é interessante nem performático, tratar fluxos como erros. O lançamento de exceções é mais onerosos que simples IFs e ELSEs.
[ ]s,
Gustavo
-
Todas as Respostas
-
Boa Tarde,
Seria interessante que ao invés de você tratá-las como "erros" você as considerasse fluxos de aplicação, ou seja, determinadas condições (que não necessariamente são erros) foram atendidas. No código "Erro 1", você criaria determinadas variáveis, atribuiria valores de "erro" para essas variáveis e dispararia essas variáveis para a aplicação seja através de um ResultSet (SELECT), através de um parâmetro (Output Parameter) ou através de um retorno (RETURN).
Não é interessante nem performático, tratar fluxos como erros. O lançamento de exceções é mais onerosos que simples IFs e ELSEs.
[ ]s,
Gustavo
-
-
Eu estava pensando em atribuir um número à uma variável e retornar essa variavel para a aplicação onde eu verificaria o número do erro e exibiria uma mensagem informando ao usuário que por exemplo o registro q ele está querendo incluir já existe no banco de dados;
-
-
-
-
-
-