create database procedimento use procedimento create table pessoa( codigo int not null identity primary key, nome varchar(100), telefone varchar(15)) create table produto( codigo int not null identity primary key, nome varchar(100), valor decimal(7,2)) create table venda( codigo_venda int not null primary key, codigo_pessoa int not null, codigo_produto int not null, qtd int not null, valor_un decimal(7,2), valor_total decimal(7,2) foreign key (codigo_pessoa) references pessoa(codigo), foreign key (codigo_produto) references produto(codigo) ) insert into produto values ('Chocolate', 2.5), ('Café', 3.5), ('Pasta de Dente', 5.5) /* Criar procedure: Create Procedure sp_nome (variáveis de entrada - com tipo) as . . . */ create procedure sp_pessoa (@acao char(1), @codigo int, @nome varchar(100), @telefone varchar(100)) as if (@acao = 'I' or @acao = 'i') begin insert into pessoa values (@nome, @telefone) end else begin if (@acao = 'D' or @acao = 'd') begin delete pessoa where codigo = @codigo end else begin if (@acao = 'U' or @acao = 'u') begin update pessoa set nome = @nome, telefone = @telefone where codigo = @codigo end else begin RAISERROR ('Código errado !!!',16,1) end end end exec sp_pessoa 'I', null, 'Leandro', '87126538' exec sp_pessoa 'U', 1, 'Leandro', '65465464' exec sp_pessoa 'D', 1, null, null select * from pessoa create procedure sp_inserevenda (@acao char(1), @codigo_pessoa int, @codigo_produto int, @qtd int) as declare @codigo_venda as int declare @valor_un as decimal(7,2) declare @valor_total as decimal(7,2) if (@acao = 'N') begin select @codigo_venda = MAX(codigo_venda) + 1 from venda if (@codigo_venda is null) begin set @codigo_venda = 1 end end else begin if (@acao = 'C') begin select @codigo_venda = MAX(codigo_venda) + 1 from venda end else begin RAISERROR ('Código Errado', 16, 1) end end select @valor_un = valor from produto where codigo = @codigo_produto set @valor_total = @valor_un * @qtd insert into venda values (@codigo_venda, @codigo_pessoa, @codigo_produto, @qtd, @valor_un, @valor_total) -- exec sp_inserevenda 'F', 2, 1, 5 select * from venda select venda.codigo_venda, pessoa.nome, produto.nome, venda.qtd, produto.valor, venda.valor_total from pessoa inner join venda on pessoa.codigo = venda.codigo_pessoa inner join produto on produto.codigo = venda.codigo_produto select pessoa.nome, SUM(valor_total) from venda inner join pessoa on venda.codigo_pessoa = pessoa.codigo group by nome /* Exercício: Fazer uma tabela cadastro (cpf, nome, endereço) com uma procedure que só permitirá a inserção dos dados se o CPF for válido, segundo o algoritmo constante em: http://imasters.com.br/artigo/2410/javascript/algoritmo-do-cpf/ */