Prova LB

Fazer download em doc, pdf ou txt
Fazer download em doc, pdf ou txt
Você está na página 1de 17

FACULDADE DE TECNOLOGIA DE SÃO PAULO

DEPARTAMENTO DE TECNOLOGIA DA INFORMAÇÃO

LBD – LABORATÓRIO DE BANCO DE DADOS

PROF. PAULO ROBERTO BERNICE

2ª PROVA 2o. SEMESTRE 2023

Nome: Kevin Sousa dos Santos Matrícula: 22119873

DATA DA ENTREGA( MAX.): 03/12/2023

1) Criar uma procedure que receberá uma Matrícula (MAT), um NOME e


quatro notas conforme a sequência: (MAT,NOME,A1,A2,A3,A4). A partir
destes valores deverá efetuar o cálculo da média somando o maior valor
entre A1 e A2 às notas A3 e A4 e dividindo o valor obtido por três (achando
a média). Se a média for menor que 6 (seis) o aluno estará REPROVADO e
se a média for igual ou superior a 6 (seis) o aluno estará APROVADO. A
procedure deverá inserir os valores acima numa tabela denominada
ALUNO com as seguintes colunas: MAT, NOME, A1, A2, A3, A4, MEDIA,
RESULTADO. Exemplo da tabela: ALUNO:
--------------------------------------------------------
MAT NOME A1 A2 A3 A4 MEDIA RESULTADO
--------------------------------------------------------
323 ANTONIO PINTO 6.5 3.5 9.5 5.0 7.0 APROVADO
324 BEATRIZ SILVA 7.5 8.5 5.5 6.0 6.6 APROVADO
326 CARLOS AGUADO 2,5 3,5 5,0 5,0 4,5 REPROVADO

Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/
Create da procedure que insere o aluno

Inserindo dados na tabela aluno

Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/
Dados Cadastrados

2) Criar código que crie DTD (formato XML) a partir dos dados da Tabela de
Cargos.

Código que cria o XML

XML

Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/
3) Quais as diferenças fundamentais entre XML e HTML? Explique e
exemplifique.

XML (Extensible Markup Language) e HTML (Hypertext Markup Language) são


linguagens de marcação com propósitos diferentes. XML é utilizado para
transportar e armazenar dados de forma genérica, sem tags predefinidas. Pode ser
validado e usado para representar qualquer tipo de dados hierárquicos. Por
exemplo:

<pessoa>

<nome>João</nome>

<idade>25</idade>

</pessoa>

HTML, por outro lado, é usado para criar páginas web, utilizando tags com
significado semântico para estruturar o conteúdo exibido no navegador. Exemplo:

<p>Este é um parágrafo em HTML.</p>

<ul>

<li>Item 1</li>

<li>Item 2</li>

</ul>

4) Disserte sobre o tipo de dados XML.

O XML (Extensible Markup Language) é uma linguagem de marcação que se


destaca pela sua versatilidade e adaptabilidade. Permitindo a definição
personalizada de tags, o XML oferece uma abordagem hierárquica para estruturar
dados, sendo amplamente utilizado em cenários onde a flexibilidade é essencial.
Sua sintaxe clara e legível por humanos, aliada à capacidade de validação e
independência de plataforma, fazem do XML uma escolha comum em configuração
de aplicativos, intercâmbio de dados entre sistemas e integração de serviços web.

Com sua capacidade de representar informações de maneira estruturada, o XML é


uma ferramenta valiosa em ambientes diversos. Sua aplicação vai desde a criação
manual de documentos até a troca de informações entre sistemas heterogêneos. A
natureza extensível do XML o torna um padrão robusto para representação de
Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/
dados, contribuindo para a interoperabilidade e eficiência em diversas aplicações
tecnológicas.

5) Conforme as tabelas abaixo:

Defina o código para recuperar os vendedores que venderam “produtos


inflamaveis”, identificados por IdProduto entre 1051 e 1300, para a Empresa de
IdCliente entre 101 e 115.

Criando as tabelas:

Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/
Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/
Código para recuperar os vendedores que venderam “produtos inflamaveis”,
identificados por IdProduto entre 1051 e 1300, para a Empresa de IdCliente entre
101 e 115.

Adicionando informações as tabelas:

Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/
Tabela categorias:

Tabela Clientes:

Tabela Itens_Pedidos:

Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/
Tabela Pedidos:

Tabela Produtos:

Tabela Transportadoras:

Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/
Tabela Vendedores:

6) Crie stored procedure que receba DTD contendo dados de diversos


funcionários (mínimo 3) e efetue sua inclusão na Tabela de Funcionários.

Tabela de Funcionários

Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/
Procedure que receba dados DTD

DTD para inserir dados na tabela

Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/
Resultado

7) Utilizando as tabelas definidas nos exercícios 4 e 5, crie uma stored


procedure que recebendo VÁRIOS IdPedido (identificação do pedido) através de
um DTD (documento XML) produza a listagem dos respectivos pedidos com itens
que os compõe. O modelo deverá ter layout semelhante a:

OBS: Editar campo CPF/CNPJ conforme a FUNCTION utilizada em aula

OBSERVAÇÕES:

Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/
Para os exercícios práticos deverão ser anexadas as evidências, que permitam a
verificação da perfeita execução dos comandos solicitados, por exemplo situação
das tabelas envolvidas antes e após execução dos comandos, mensagens e status do
T-SQL, além dos próprios comandos, etc.

Identifique criando cabeçalho ou rodapé em todas as folhas utilizadas


com número de matrícula, nome do aluno, número/qtd.total de páginas e
versão do SQL utilizada.

CREATE FUNCTION fn_CpfCnpj(@NrCpfCnpj VARCHAR(15))


RETURNS VARCHAR(19)
AS
BEGIN
DECLARE @retorno VARCHAR(19)
IF (SUBSTRING(@NrCpfCnpj,10,4) = '0000')
SET @retorno = SUBSTRING(@NrCpfCnpj,1,3) + '.' +
SUBSTRING(@NrCpfCnpj,4,3) + '.' + SUBSTRING(@NrCpfCnpj,7,3) + '-' +
SUBSTRING(@NrCpfCnpj,14,2)
ELSE
SET @retorno = SUBSTRING(@NrCpfCnpj,2,2) + '.' +
SUBSTRING(@NrCpfCnpj,4,3) + '.' + SUBSTRING(@NrCpfCnpj,7,3) + '/' +
SUBSTRING(@NrCpfCnpj,10,4) + '-' + SUBSTRING(@NrCpfCnpj,14,2)
RETURN @retorno
END

CREATE PROCEDURE ListarPedidosComItens


@XMLPedidos XML
AS
BEGIN
DECLARE @IdPedido VARCHAR(5);
DECLARE @Pedido_Data VARCHAR(20);
DECLARE @IdCliente VARCHAR(5);
DECLARE @NomeCliente VARCHAR(1024);
DECLARE @CGC_CPF VARCHAR(50);
DECLARE @ENDERECO VARCHAR(1024);
DECLARE @BAIRRO VARCHAR(512);
DECLARE @CEP VARCHAR(15);
DECLARE @CIDADE VARCHAR(1024);
DECLARE @UF CHAR(2);
DECLARE @IdVendedor VARCHAR(5);
DECLARE @NomeVendedor VARCHAR(1024);
DECLARE @CpfCgcCli VARCHAR(19);

Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/
DECLARE @IdPedidoNode XML;

-- Criação da tabela temporária para armazenar os IdPedido do XML


CREATE TABLE #TempPedidos (IdPedido INT);

-- Inserção dos IdPedido do XML na tabela temporária


INSERT INTO #TempPedidos (IdPedido)
SELECT IdPedidoNode.value('.', 'INT')
FROM @XMLPedidos.nodes('/Pedidos/IdPedido') AS T(IdPedidoNode);

DECLARE cursorPedidos CURSOR FOR


SELECT
RIGHT('000' + CAST(p.IdPedido AS VARCHAR(3)), 4),
CONVERT(VARCHAR, P.Data, 103),
RIGHT('000' + CAST(p.IdCliente AS VARCHAR(3)), 4),
c.Nome,
c.CGC_CPF,
c.ENDERECO,
c.BAIRRO,
c.CEP,
c.CIDADE,
c.UF,
RIGHT('000' + CAST(p.IdVendedor AS VARCHAR(3)), 4),
v.Nome
FROM Pedidos p
LEFT JOIN Clientes c ON c.IdCliente = p.IdCliente
LEFT JOIN Vendedores v ON v.IdVendedor = p.IdVendedor
INNER JOIN #TempPedidos t ON t.IdPedido = p.IdPedido;

OPEN cursorPedidos;

FETCH NEXT FROM cursorPedidos


INTO @IdPedido,
@Pedido_Data,
@IdCliente,
@NomeCliente,
@CGC_CPF,
@ENDERECO,
@BAIRRO,
@CEP,
@CIDADE,
@UF,
@IdVendedor,
@NomeVendedor

Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/
;

WHILE @@FETCH_STATUS = 0
BEGIN
PRINT REPLICATE('=', 90)
PRINT 'Cód. Pedido : ' + @IdPedido
+ REPLICATE(' ', 46)
+ ' | Data Pedido: ' + @Pedido_Data
PRINT 'Cód. Cliente: ' + @IdCliente
SET @CpfCgcCli = CONVERT(VARCHAR, @Cgc_cpf, 15)
SELECT @CpfCgcCli = dbo.fn_CpfCnpj(@CpfCgcCli)
PRINT 'Nome Cliente: ' + LEFT(RTRIM(@NomeCliente)
+ REPLICATE(' ', 50), 50)
+ ' | CGC/CPF: ' + @CpfCgcCli

PRINT ' Endereço: ' + LEFT(RTRIM(@Endereco)


+ REPLICATE(' ', 50), 50)
+ ' | Bairro: ' + @Bairro
PRINT ' CEP: ' + @CEP
+ ' | Cidade: ' + LEFT(RTRIM(@Cidade)
+ REPLICATE(' ', 30), 29)
+ ' | UF: ' + @UF
PRINT 'Cód.Vendedor: ' + @IdVendedor
+ REPLICATE(' ', 06)
+ ' | Nome Vendedor: ' + @NomeVendedor
PRINT REPLICATE('-', 90)
PRINT REPLICATE (' ', 35) + ' I T E N S'
PRINT REPLICATE('-', 90)
PRINT 'COD. ITEM'
+ ' | QTD.'
+ ' | DESCRIÇÃO' + REPLICATE(' ', 36)
+ ' | VR.UNIT'
PRINT REPLICATE('-', 90)

DECLARE @IdItem CHAR(5);


DECLARE @Qtd CHAR(3);
DECLARE @Descricao VARCHAR(1024);
DECLARE @ValorUnit SMALLMONEY;
DECLARE @ValorTotal MONEY;

DECLARE cursorItens CURSOR FOR


SELECT RIGHT('00000' + CAST(i.IdItem AS VARCHAR(5)), 5),
RIGHT('000' + CAST(ip.Quantidade AS VARCHAR(3)), 3),
LEFT (i.Descricao + REPLICATE(' ', 45), 45),

Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/
ip.Valor_Unitario
FROM Itens i
INNER JOIN Pedido_Itens ip
ON ip.IdItem = i.IdItem
WHERE ip.IdPedido = @IdPedido
;

OPEN cursorItens;

FETCH NEXT FROM cursorItens


INTO @IdItem,
@Qtd,
@Descricao,
@ValorUnit
;

--Inicializa variável para cada pedido encontrado.


SET @ValorTotal = 0;

WHILE @@FETCH_STATUS = 0
BEGIN
PRINT ' ' + @IdItem + ' | '
+ ' ' + @Qtd
+ ' | ' + @Descricao
+ ' | R$ ' + CAST(@ValorUnit AS VARCHAR(64))
SET @ValorTotal = @ValorTotal + (convert(decimal(10,2), @ValorUnit) * @Qtd);

FETCH NEXT FROM cursorItens


INTO @IdItem,
@Qtd,
@Descricao,
@ValorUnit
;
END

PRINT REPLICATE('-', 90)


PRINT REPLICATE(' ', 30)
+ LEFT('VALOR TOTAL DO PEDIDO'
+ REPLICATE('.', 30), 35)
+ ': R$ ' + CAST(@ValorTotal AS VARCHAR(128))
PRINT REPLICATE('-', 90)
PRINT 'Fim.'
PRINT ''
PRINT ''

Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/
--FIM ITENS

CLOSE cursorItens;
DEALLOCATE cursorItens;

FETCH NEXT FROM cursorPedidos


INTO @IdPedido,
@Pedido_Data,
@IdCliente,
@NomeCliente,
@CGC_CPF,
@ENDERECO,
@BAIRRO,
@CEP,
@CIDADE,
@UF,
@IdVendedor,
@NomeVendedor
;
END

CLOSE cursorPedidos;
DEALLOCATE cursorPedidos;

-- Remoção da tabela temporária


DROP TABLE #TempPedidos;
END

Cod. Matr.22119873 nome: Kevin Sousa dos Santos VERSAO XAMPP CONTROL
PANEL V3.3.0/

Você também pode gostar