create database aulaprocedure use aulaprocedure create table pessoa( id int not null, nome varchar(100), telefonefixo char(10), telefonecelular char(11) primary key(ID)) select * from pessoa CREATE PROCEDURE sp_pessoa (@operacao char(1), @id int, @nome varchar(100),@telefonefixo char(11), @telefonecelular char(11), @saida varchar(200) OUTPUT) AS DECLARE @idcadastro INT, @contador INT IF (UPPER(@operacao) = 'D') BEGIN DELETE pessoa WHERE id = @id SET @saida = 'Exclusão efetuada com sucesso !' END ELSE BEGIN IF (@telefonecelular IS NULL AND @telefonefixo IS NULL) BEGIN RAISERROR ('Deve existir ao menos um telefone',16,1) END ELSE BEGIN IF(LEN(@telefonefixo) = LEN(@telefonecelular)) BEGIN RAISERROR('Telefones devem ser de tipos diferentes',16,1) END ELSE BEGIN IF ((LEN(@telefonefixo) = 10 OR @telefonefixo IS NULL) AND (LEN(@telefonecelular) = 11 OR @telefonecelular IS NULL)) BEGIN IF (UPPER(@operacao) = 'I') BEGIN SET @contador = (SELECT COUNT(*) FROM pessoa) IF (@contador = 0) BEGIN SET @idcadastro = 1 END ELSE BEGIN SELECT @idcadastro = MAX(id) + 1 FROM pessoa END INSERT INTO pessoa VALUES (@idcadastro,@nome,@telefonefixo,@telefonecelular) SET @saida = 'Cadastro efetuado com sucesso !' END ELSE BEGIN IF (UPPER(@operacao) = 'U') BEGIN UPDATE pessoa SET nome = @nome, telefonefixo = @telefonefixo, telefonecelular = @telefonecelular WHERE id = @id SET @saida = 'Atualizado com sucesso !' END ELSE BEGIN RAISERROR('Operação Inválida !',16,1) END END END ELSE BEGIN RAISERROR('Telefones inconsistentes !',16,1) END END END END SELECT * FROM pessoa DECLARE @saida VARCHAR(200) EXEC sp_pessoa 'I',NULL,'Fulano',NULL,'11999999999',@saida OUTPUT PRINT @saida DECLARE @saida VARCHAR(200) EXEC sp_pessoa 'U',1,'Fulano','1122222222','11999999999',@saida OUTPUT PRINT @saida DECLARE @saida VARCHAR(200) EXEC sp_pessoa 'I',NULL,'Cicrano','113333333','1188888888',@saida OUTPUT PRINT @saida DECLARE @saida VARCHAR(200) EXEC sp_pessoa 'D',1,NULL,NULL,NULL,@saida OUTPUT PRINT @saida