PROCEDURE

VELDRAME 27/06/2012 18:22:51
#405057
Boa noite.
Alguém saberia me dizer o que há de errado com essa proc?
1º - Ela deveria fazer uma comparação no banco (ai o uso do SELECT)
Caso não haja o registro no banco fazer parte 2 e 3
2º - Testar o parâmetro @CodMotivo
3º Fazer o INSERT.

O sistema roda sem retornar nenhum erro.


CREATE PROCEDURE [dbo].[sp_Devolucao_Extrato]
(
@DataDevolucao varchar(10),
@CIF Varchar (8000),
@CodMotivo Varchar(2)
)
AS
BEGIN
Declare @BuscaCIF Varchar (8000)
Declare @Motivo varchar(50)

select @BuscaCIF = ysnCodCif from CompactCedo.dbo.tbl_Arq_Devolucao_Cedo3 where ysnCodCif = @CIF

If @BuscaCIF <> @CIF
BEGIN
IF @CodMotivo = [ô]01[ô]
BEGIN
Set @Motivo = [ô]Mudou-se[ô]
END
ELSE If @CodMotivo = [ô]02[ô]
BEGIN
Set @Motivo = [ô]Endereço Insuficiente[ô]
END

INSERT INTO CompactCedo.dbo.tbl_Arq_Devolucao_Cedo3 (ysnCodCif,ysnCodMotivoDevolucao,strMotivoDevolucao,dtDataDevolucao)
Values(@CIF,@CodMotivo,@Motivo,@DataDevolucao)
END
END

USUARIO.EXCLUIDOS 27/06/2012 21:49:46
#405066
Resposta escolhida
acho que nao precisa de tanto BEGIN e END desse tanto seria somente 1

Faça algo assim

Paramentros
Declaracoes set
BEGIN TRANSACTION
IF
ELSE IF
END
VELDRAME 28/06/2012 09:47:09
#405092
Quanto aos [Ô]Begin[Ô], beleza. Sei que não precisa mais eu gosto de ver tudo bem separado.

Sei também que não é este o problema, acho que a questão esta na consulta e depois comparação.
Pela estrutura que fiz deveria funcionar.
1º - Ele faz uma consulta e compara o resultado.
2º - Se forem diferentes entra no IF.
VELDRAME 28/06/2012 10:11:21
#405097
Resolvi.
Estava faltando uma comparação a mais,
-- E SE FOR NULL?

If @BuscaCIF is null or @BuscaCIF <> @CIF
-- Entra no IF

Mas valeu Aleda!
Vai um pontinho pela boa vontade!
Abraços!
Tópico encerrado , respostas não são mais permitidas