Ir para conteúdo
Fórum CódigoFonte.net
caguerra

function

Recommended Posts

ola bom dia

então fiz uma banco de dados em sql sobre academia e tudo mais eu consegui criaras tabelas

Drop table atividade cascade constraint;
Drop table estacionamento cascade constraint;
Drop table horarios cascade constraint;
Drop table dia cascade constraint;
Drop table mensalidade cascade constraint;
Drop table cliente cascade constraint;
Drop table funcionario cascade constraint;
Drop table turma cascade constraint;
Drop table curso cascade constraint;
Drop table novo_funcionario cascade constraint;
Drop table novo_sal cascade constraint;

CREATE TABLE Atividade (
Cod_Atividade Integer NOT NULL,
Nome_Atividade VARCHAR(50) NOT NULL,
PRIMARY KEY (Cod_Atividade));

INSERT INTO Atividade Values(1,'Musculacao');
INSERT INTO Atividade Values(2,'Natacao');
INSERT INTO Atividade Values(3,'Artes Maciais');
INSERT INTO Atividade Values(4,'Aeróbica');

CREATE TABLE Cliente (
Cod_Cliente Integer NOT NULL,
Nome_Cliente VARCHAR(50) NOT NULL,
End_Cliente VARCHAR(60) NOT NULL,
CPF Integer NOT NULL,
Cod_Men Integer,
PRIMARY KEY (Cod_Cliente),
FOREIGN KEY (Cod_Men) References Mensalidade(Cod_Men));

INSERT INTO cliente Values(1,'Victor Souza','Rua Augusta',452658769,1);
INSERT INTO cliente Values(2,'Rafaela Garcia','Rua Itambé',422677472,2);
INSERT INTO cliente Values(3,'Bruna de Almeida','Rua Vergueiro',158495687,1);
INSERT INTO cliente Values(4,'Pedro Eiji','Avenida Imbira',479632002,3);
INSERT INTO cliente Values(5,'Luiza Teixeira','Rua Maria Antonia',745214896,2);
INSERT INTO cliente Values(6,'Gustavo Lima','Rua Higienópolis',402598015,1);



CREATE TABLE Estacionamento (
Num_Reg Integer NOT NULL,
Hora_Entrada VARCHAR(5) NOT NULL,
Hora_Saida VARCHAR(5)NOT NULL,
Placa_veic VARCHAR(7) NOT NULL,
Cor_veic VARCHAR(10) NOT NULL,
cod_cliente integer,
PRIMARY KEY (Num_reg),
FOREIGN KEY (cod_cliente) references cliente(cod_cliente));

INSERT INTO Estacionamento Values(1,'9:00','12:30','EUQ7728','Prata',1);
INSERT INTO Estacionamento Values(2,'12:00','15:00','UHJ0025','Preto',3);
INSERT INTO Estacionamento Values(3,'10:00','13:50','BGD5896','Branco',4);
INSERT INTO Estacionamento Values(4,'18:45','20:20','DOS4062','Rosa',2);
INSERT INTO Estacionamento Values(5,'20:45','22:20','GHU1561','Azul',6);

CREATE TABLE Horarios (
Cod_Hora Integer NOT NULL,
Hora_Inicio VARCHAR(20) NOT NULL,
Hora_Fim VARCHAR(20) NOT NULL,
PRIMARY KEY (Cod_Hora));

INSERT INTO Horarios Values (1,'10:00','12:30');
INSERT INTO Horarios Values (2,'13:00','15:30');
INSERT INTO Horarios Values (3,'16:00','17:30');
INSERT INTO Horarios Values (4,'18:00','20:30');
INSERT INTO Horarios Values (5,'21:00','23:30');

CREATE TABLE Dia (
Cod_Dia Integer NOT NULL,
Dia VARCHAR(20) NOT NULL,
PRIMARY KEY(Cod_Dia));

INSERT INTO Dia Values (1,'Segunda-feira');
INSERT INTO Dia Values (2,'Terca-feira');
INSERT INTO Dia Values (3,'Quarta-feira');
INSERT INTO Dia Values (4,'Quinta-feira');
INSERT INTO Dia Values (5,'Sexta-feira');

CREATE TABLE Mensalidade (
Cod_Men Integer NOT NULL,
Tipo VARCHAR(20) NOT NULL,
Valor Integer NOT NULL,
PRIMARY KEY (Cod_Men));

INSERT INTO Mensalidade Values (1,'Mensal',80);
INSERT INTO Mensalidade Values (2,'Anual',1000);
INSERT INTO Mensalidade Values (3,'Semanal',20);




CREATE TABLE Funcionario (
Cod_Func Integer NOT NULL,
Nome_Func VARCHAR(50) NOT NULL,
Salario Integer NOT NULL,
Cod_Atividade Integer,
PRIMARY KEY (Cod_Func),
FOREIGN KEY(Cod_Atividade) References Atividade(Cod_atividade));

INSERT INTO Funcionario Values(1,'Thiago',2000,1);
INSERT INTO Funcionario Values(2,'Juliana',3060,3);
INSERT INTO Funcionario Values(3,'Pedro',1000,1);
INSERT INTO Funcionario Values(4,'Maria',4000,2);
INSERT INTO Funcionario Values(5,'Joao',2900,4);
INSERT INTO Funcionario Values(6,'Jose',3350,4);

CREATE TABLE Turma (
Cod_Turma integer not null,
Cod_Atividade Integer NOT NULL,
Cod_Dia Integer NOT NULL,
Cod_Hora integer not null,
PRIMARY KEY (Cod_Turma),
FOREIGN KEY(Cod_Atividade)References Atividade(Cod_Atividade),
FOREIGN KEY(Cod_Dia)References Dia(Cod_Dia),
FOREIGN KEY(Cod_Hora)References Horarios(Cod_Hora));

INSERT INTO Turma Values (1,1,1,1);
INSERT INTO Turma Values (2,3,5,4);
INSERT INTO Turma Values (3,2,2,5);

CREATE TABLE Curso (
Cod_Cliente Integer NOT NULL,
Cod_Turma Integer NOT NULL,
FOREIGN KEY(Cod_Turma)References Turma(Cod_Turma),
FOREIGN KEY(Cod_Cliente)References Cliente(Cod_Cliente));

INSERT INTO Curso Values (3,3);
INSERT INTO Curso Values (1,1);
INSERT INTO Curso Values (5,2);



-------------------------------------------------
create table novo_funcionario
(cod_func integer, 
nome_func varchar(20),
data_contrato date);

create table novo_sal
(cod_func integer,
sal_velho integer,
sal_novo integer);

e fiz tb aplicações com trigger inner join left join right join ,sub select,procedures

mas eu to precisando de ajuda em fazer duas aplicações com function pois tenho dificuldade em fazer esta parte

eu coloquei a parte de criar as tabelas acima e o que fiz ate agora em algumas aplicaçoes e nao sei como fazer o function do banco de dados criado

sera que tem como me ajudar pois eu nao tenho muito conhecimento em Fuctions estou quebrando a cabeça e nao sei mais o que fazer

--Trigger 1


create or replace trigger func
before
insert or update of salario
on Funcionario
for each row
begin

if inserting then
insert into novo_funcionario
(cod_func, nome_func, data_contrato)
values (:new.cod_func, :new.nome_func, sysdate);

elsif

updating then
insert into novo_sal
(cod_func, sal_velho, sal_novo)
values (:old.cod_func, :old.salario, :new.salario);
end if;

end;

--Trigger 2

create or replace trigger registro
before
delete on cliente
for each row

begin

delete from curso
where (cod_cliente = :old.cod_cliente);

delete from estacionamento
where (cod_cliente = :old.cod_cliente);

end;

------------------------------------------------
Procedure 1

CREATE OR REPLACE PROCEDURE novo_salario
(nomeat IN VARCHAR, 
porcento in integer)
IS
BEGIN

UPDATE Funcionario
SET Salario = Salario * (1 + porcento/100)
WHERE cod_atividade IN 
    (SELECT cod_atividade   
    FROM atividade
    WHERE (nome_atividade = nomeat));
END novo_salario;

execute novo_salario ('Musculacao', 10);

--Procedure 2

CREATE OR REPLACE PROCEDURE novaat
(nomeat1 IN VARCHAR,
turma in integer)
IS

BEGIN

UPDATE Turma
SET cod_atividade =
    (SELECT cod_atividade   
    FROM atividade
    WHERE (nome_atividade = nomeat1))
    where cod_turma = turma;
    
END novaat;

execute novaat('Musculacao',2);
------------------------------------------

1) 

select d.cod_dia, dia, nome_atividade
from Dia d left join turma t
on ( d.cod_dia = t.cod_dia)
left join atividade at
on (t.cod_atividade = at.cod_atividade)
order by d.cod_dia;


2)

select Dia
from Atividade at inner join Turma
on ( at.cod_atividade = turma.cod_atividade )
inner join Dia
on ( turma.cod_dia = dia.cod_dia )
where (nome_atividade = 'Natacao');



3)

select cod_cliente,nome_cliente
from cliente c
where c.cod_cliente in(
  select cod_cliente
  from curso cur
  where cur.cod_turma in (
        select cod_turma
        from turma
        where cod_dia in (
            select cod_dia
            from dia
            where dia = 'Segunda-feira')));

obrigado pela ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Processando...

×
×
  • Criar Novo...