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