none
Alter Procedure com Select, Insert, Update e Delete RRS feed

  • Pergunta

  • Pessoal,

    Bom dia! Estou desenvolvendo uma aplicação em VB.NET e montei a seguinte Alter Procedure conforme abaixo:

    ALTER PROCEDURE dbo.sqlXML
    (
    @açaoXML Varchar (15),
    @id Int=Null,
    @nomeXML Varchar (50)=Null,
    @telefoneXML Varchar (50)=Null
    )
    
    As
    Begin
    	Set Nocount ON;
    
    	If @açaoXML = 'Novo'
    		Begin
    			Select Max(Codigo) As UltimoCOD From mvm
    			If UltimoCOD >= 0
    			Begin
    				@id = UltimoCOD + 1
    			End
    			Insert Into mvm (Codigo, Nome, Telefone) Values (@id, @nomeXML, @telefoneXML)
    		End
    	Else If @açaoXML = 'Buscar'
    		Begin
    			Select * From mvm
    		End
    	Else If @açaoXML = 'Salvar'
    		Begin
    			Update mvm Set Nome = @nomeXML, Telefone = @telefoneXML Where Codigo = @id
    		End
    	Else If @açaoXML = 'Delete'
    		Begin
    			Delete From mvm Where Codigo = @id
    		End
    	End

    Estou encontrando dificuldade na ação novo, onde eu gostaria de dar um select max(codigo), pegar o valor inserido e somar mais um para inserir no comando insert. Está dando os seguintes erros:

    Incorrect syntax near '@id'.

    Incorrect syntax near the keyword 'Else'.

    Incorrect syntax nera 'End'.

    Sou inciante em SQL SERVER e sei que talvez seja um erro bobo, mas poderiam me ajudar? Tem como implementar essa rotina conforme descrito acima? Agradeço desde já pela atenção e disposição dos colegas em ajudar.

    Obrigado.

    sexta-feira, 27 de março de 2015 12:08

Respostas

  • Bom dia,

    Existem alguns erros aí. Você precisa de uma variável pra receber o valor de MAX(Codigo) FROM mvm e aí sim usar essa variável abaixo.

    Também existe um erro na atribuição de valor na variável @ID.

    Veja abaixo o trecho do seu código que eu modifiquei. Note que se o valor de MAX(Codigo) for nulo, eu estou atribuindo zero. Veja se isso atende aos seus requisitos.

    Set Nocount ON;
    
    	DECLARE @UltimoCod INT
    
    	If @açaoXML = 'Novo'
    	Begin
    		Select @UltimoCod =  ISNULL(Max(Codigo),0) From mvm
    		If @UltimoCod >= 0
    		Begin
    			SET @id = @UltimoCod + 1
    		End
    		Insert Into mvm (Codigo, Nome, Telefone) Values (@id, @nomeXML, @telefoneXML)
    	End


    Espero ter ajudado


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */


    sexta-feira, 27 de março de 2015 12:26

Todas as Respostas

  • Bom dia,

    Existem alguns erros aí. Você precisa de uma variável pra receber o valor de MAX(Codigo) FROM mvm e aí sim usar essa variável abaixo.

    Também existe um erro na atribuição de valor na variável @ID.

    Veja abaixo o trecho do seu código que eu modifiquei. Note que se o valor de MAX(Codigo) for nulo, eu estou atribuindo zero. Veja se isso atende aos seus requisitos.

    Set Nocount ON;
    
    	DECLARE @UltimoCod INT
    
    	If @açaoXML = 'Novo'
    	Begin
    		Select @UltimoCod =  ISNULL(Max(Codigo),0) From mvm
    		If @UltimoCod >= 0
    		Begin
    			SET @id = @UltimoCod + 1
    		End
    		Insert Into mvm (Codigo, Nome, Telefone) Values (@id, @nomeXML, @telefoneXML)
    	End


    Espero ter ajudado


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */


    sexta-feira, 27 de março de 2015 12:26
  • Mariana,

    Muito obrigado pela prontidão em ajudar. Fico muito agradecido por sua gentileza. Era exatamente isso que eu estava precisando.

    Obrigado!

    sexta-feira, 27 de março de 2015 13:15