Você está na página 1de 2

-- Exemplo Produtos

Drop table Produto


CREATE TABLE PRODUTO (
CODIGO integer,
CATEGORIA CHAR(1),
VALOR decimal(4,2));

INSERT INTO PRODUTO VALUES (1001,'A',7.55);


INSERT INTO PRODUTO VALUES (1002,'B',5.95);
INSERT INTO PRODUTO VALUES (1003,'C',3.45);
INSERT INTO PRODUTO VALUES (1004,'A',7.00);
INSERT INTO PRODUTO VALUES (1005,'A',5.00);
INSERT INTO PRODUTO VALUES (1006,'A',3.00);
INSERT INTO PRODUTO VALUES (1007,'C',1.00);
INSERT INTO PRODUTO VALUES (1008,'C',1.20);
INSERT INTO PRODUTO VALUES (1009,'C',1.40);

select * from produto

--SOLUO 1
CREATE OR REPLACE FUNCTION atualiza_produtos1() RETURNS VOID AS
$$
DECLARE
C_PRODUTO RECORD;
BEGIN
FOR C_Produto IN SELECT * FROM produto
LOOP

IF C_PRODUTO.CATEGORIA = 'A' THEN


UPDATE PRODUTO SET VALOR = VALOR * 1.05 WHERE
CODIGO = C_PRODUTO.CODIGO;
ELSIF C_PRODUTO.CATEGORIA = 'B' THEN
UPDATE PRODUTO SET VALOR = VALOR * 1.10 WHERE
CODIGO = C_PRODUTO.CODIGO;
ELSE
UPDATE PRODUTO SET VALOR = VALOR * 1.15 WHERE
CODIGO = C_PRODUTO.CODIGO;
END IF;
END LOOP;
Return;
END;
$$ LANGUAGE 'plpgsql'
select * from produto

select atualiza_produtos1()

-----
CREATE OR REPLACE FUNCTION atualiza_por_categoria(char(1),decimal(4,2))
RETURNS VOID AS
$$
DECLARE
C_PRODUTO RECORD;

BEGIN
FOR C_Produto IN SELECT * FROM produto
LOOP

IF C_PRODUTO.CATEGORIA = $1 THEN
UPDATE PRODUTO SET VALOR = C_Produto.VALOR * $2
WHERE CODIGO = C_PRODUTO.CODIGO;
END IF;
END LOOP;
Return;
END;
$$ LANGUAGE 'plpgsql'

select atualiza_por_categoria ('A',1.25)

----

Você também pode gostar

  • Questionário I
    Questionário I
    Documento14 páginas
    Questionário I
    Josilene Lucas
    Ainda não há avaliações
  • 15questoes de Analise
    15questoes de Analise
    Documento2 páginas
    15questoes de Analise
    Josilene Lucas
    Ainda não há avaliações
  • 15questoes de Analise
    15questoes de Analise
    Documento2 páginas
    15questoes de Analise
    Josilene Lucas
    Ainda não há avaliações
  • Atividade Aula3
    Atividade Aula3
    Documento2 páginas
    Atividade Aula3
    Josilene Lucas
    Ainda não há avaliações
  • Resumoipv 6
    Resumoipv 6
    Documento1 página
    Resumoipv 6
    Josilene Lucas
    Ainda não há avaliações
  • Resumo G.1
    Resumo G.1
    Documento2 páginas
    Resumo G.1
    Josilene Lucas
    Ainda não há avaliações
  • Documento 1
    Documento 1
    Documento1 página
    Documento 1
    Josilene Lucas
    Ainda não há avaliações