Usuário com melhor resposta
Alter Procedure com Select, Insert, Update e Delete

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.
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 */
- Editado Mariana Del Nero sexta-feira, 27 de março de 2015 12:27
- Marcado como Resposta FAS Automação Industrial sexta-feira, 27 de março de 2015 13:13
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 */
- Editado Mariana Del Nero sexta-feira, 27 de março de 2015 12:27
- Marcado como Resposta FAS Automação Industrial sexta-feira, 27 de março de 2015 13:13
-