Banco de Dados
-- O Valor total do novo pedido deverá ser nulo, o número do pedido deverá ser calculado (como o maior número de pedido existente mais um) e a data deverá ser obtida através da função que retorna a data atual do sistema.
-- OBS: Veja funções de data e hora em SQL Server em http://technet.microsoft.com/pt-br/library/ms186724.aspx, para o exercício utilize GETDATE().
go
-- Funcao ISNULL()
SELECT COALESCE(NULL, NULL, NULL, NULL, 10, NULL, NULL, 20) -- RETORNA A PRIMEIRA EXPRESSAO DIFERENTE DE NULO
SELECT ISNULL(NULL, 1) -- VERIFICA SE O VALOR É NULO E RETORNA O PROXIMO ALGUMENTO,
SELECT ISNULL(101, 1) -- SE A ESPRESSAO NAO FOR NULA, ELE RETORNA A PROPRIA EXPRESSAO (101)
declare @ped_numero int
SELECT @ped_numero = ISNULL(MAX(PED_NUMERO), 0) +1
FROM PEDIDO
--select @ped_numero = max(ped_numero)
--from pedido
--if (@ped_numero is null)
-- set @ped_numero = 1 -- é o primeiro pedido
--else
-- set @ped_numero = @ped_numero + 1
--- RESPOSTA
GO
CREATE PROC pr_InserePedido @cli_codigo int
as
declare @ped_numero INT declare @ped_data DATETIME
select @ped_numero = isnull(max(ped_numero),0)+1 from pedido
set @ped_data = getdate()
insert pedido values (@ped_numero, @cli_codigo, @ped_data, null)
go
pr_InserePedido 2
select * from pedido
/* 2. Para atualizar o preço de um determinado produto. O código do produto e o percentual de aumento devem ser passados como parâmetros. O aumento somente poderá ser aplicado se o valor final do preço (após o aumento), for menor ou igual ao valor médio dos produtos do grupo do produto que vai sofrer o aumento. */
GO
CREATE PROC pr_AumentoPrecoProduto
@pro_codigo INT,
@perc_aumento NUMERIC (3,2)
as
declare @grp_codigo INT declare @valor_medio NUMERIC (9,2) declare @novo_preco NUMERIC (9,2)
select @grp_codigo