Ir para conteúdo
Fórum Script Brasil
  • 0

Erro Com Procedure


Guest - Ricardo -

Pergunta

Guest - Ricardo -

Boa noite galera,

Criei a procedure abaixo e da o seguinte erro

Server: Msg 137, Level 15, State 2, Procedure SP_INSERE_VISITA, Line 10

Must declare the variable '@vagas'.

Server: Msg 137, Level 15, State 1, Procedure SP_INSERE_VISITA, Line 12

Must declare the variable '@vagas'.

*******************************************************

ALTER PROCEDURE SP_INSERE_VISITA

(

@id_condominio int,

@id_predio int,

@id_apto int,

@placa char(7)

)

AS

SELECT @vagas FROM TB_APTOS WHERE id_apto = @id_apto

IF (@VAGAS = 0)

BEGIN

PRINT 'Não existe vaga para este apto'

RETURN

END

ELSE

BEGIN

INSERT INTO TB_VISITAS (id_condominio,id_predio,id_apto,placa)

VALUES (@id_condominio,@id_predio,@id_apto,@placa)

PRINT 'Vaga cadastrada com sucesso'

END

****************************************************************

o problema é que se declaro no inicio , o erro vai dar na hora em que eu mandar executar a procedure

Quem puder ajudar eu agradeço

abraços

Ricardo

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Guest --Reinaldo --
qual o erro que dá quando voce manda executar?

Então o problema é o seguinte:

1 - você precisa declarar a variavel sim...

2 - O erro que aparece depois é por causa deste código: "SELECT @vagas FROM TB_APTOS WHERE id_apto = @id_apto"

Para Corrigir:

1 - Declare a variável

2 - Altere o comando para algo assim: SELECT @vagas = Count(*) FROM TB_APTOS WHERE id_apto = @id_apto

O erro acontece porque o SQL não sabe o que fazer com a variável, você precisa indicar o que vai ser jogado nela, não funciona como num INSERT SELECT.

Espero ter ajudado.

Att,

Reinaldo.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Gesiel --

Ricardo,

como disse a Andreia, você tem que declarar a variável. Basta você mudar sua procedure para o exemplo abaixo:

ALTER PROCEDURE SP_INSERE_VISITA

(

@id_condominio int,

@id_predio int,

@id_apto int,

@placa char(7)

)

AS

SET NOCOUNT ON

DECLARE @vagas int

SELECT @vagas = COUNT(*) FROM TB_APTOS WHERE id_apto = @id_apto

IF (@VAGAS = 0)

BEGIN

PRINT 'Não existe vaga para este apto'

RETURN

END

ELSE

BEGIN

INSERT INTO TB_VISITAS (id_condominio,id_predio,id_apto,placa)

VALUES (@id_condominio,@id_predio,@id_apto,@placa)

PRINT 'Vaga cadastrada com sucesso'

END

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...