SQL Scripts for Library Loans, Users and Levels
Classified in Technology
Written on in
English with a size of 2.79 KB
SELECT u.nome AS 'NOME', u.cpf AS 'CPF', COUNT(*) AS 'QUANTIDADE EMPRESTIMOS' FROM emprestimo e, usuario u, livros l
WHERE e.codigo_usuario = u.codigo AND l.codigo_livro = e.codigo_livro
GROUP BY u.nome, u.cpf HAVING COUNT(*) > 2;
Stored Procedure: pr1
ALTER PROCEDURE pr1
@codigo_livro int,
@titulo varchar(50),
@autor varchar(50),
@emprestado int
AS
IF @codigo_livro > 0
BEGIN
INSERT INTO livros VALUES (@codigo_livro, @titulo, @autor, @emprestado)
PRINT ('CADASTRO REALIZADO')
END
ELSE
BEGIN
PRINT ('INFORME TODOS OS CAMPOS VÁLIDOS')
END
EXEC pr1 4, 'Guiness Book', 'World', 0;
View: vw1
ALTER VIEW vw1 AS
SELECT u.nome AS 'Nome Do Usuario', COUNT(*) AS 'QTD',
CASE
WHEN COUNT(*) > 1 AND COUNT(*) < 3 THEN 'INICIANTE LIMITE 2'
WHEN COUNT(*) > 3 AND COUNT(*) < 7 THEN 'MEDIO LIMITE 3'
ELSE 'AVANÇADO LIMITE 5'
END AS 'NIVEL USUÁRIO'
FROM usuario u, emprestimo e WHERE u.codigo = e.codigo_usuario
GROUP BY u.nome;
SELECT * FROM vw1;
EX 5
CREATE TABLE usuario (
codigo INT NOT NULL IDENTITY(1,1),
nome VARCHAR(45),
cpf VARCHAR(45),
email VARCHAR(45),
telefone VARCHAR(45),
endereco VARCHAR(100),
senha VARCHAR(45),
PRIMARY KEY (codigo));
ALTER TABLE usuario ADD nivel VARCHAR(50);
DECLARE @vcodigo INT;
DECLARE @vnome VARCHAR(40);
DECLARE @vcpf VARCHAR(40);
DECLARE @vemail VARCHAR(40);
DECLARE @vtelefone VARCHAR(40);
DECLARE @vsenha VARCHAR(45);
DECLARE @vnivel VARCHAR(45);
DECLARE @vant INT;
DECLARE @total_e INT;
DECLARE tabela CURSOR LOCAL FOR SELECT codigo, nome, cpf, email, telefone, senha FROM usuario ORDER BY codigo;
OPEN tabela;
FETCH NEXT FROM tabela INTO @vcodigo, @vnome, @vcpf, @vemail, @vtelefone, @vsenha;
WHILE (@@FETCH_STATUS = 0)
BEGIN
SELECT @total_e = COUNT(*) FROM emprestimo e
WHERE e.codigo_emprestimo = @vcodigo;
SET @vnivel =
CASE
WHEN @total_e > 1 AND @total_e < 3 THEN 'INICIANTE LIMITE 2'
WHEN @total_e > 3 AND @total_e < 7 THEN 'MEDIO LIMITE 3'
ELSE 'AVANÇADO LIMITE 5'
END;
UPDATE usuario SET nivel = @vnivel WHERE codigo = @vcodigo;
FETCH NEXT FROM tabela INTO @vcodigo, @vnome, @vcpf, @vemail, @vtelefone, @vsenha;
END
CLOSE tabela;
DEALLOCATE tabela;