HilarYo 0 Denunciar post Postado Fevereiro 13, 2014 Boas noites, Alguém me pode ajudar a criar um procedimento, ou dar alguma sugestão se outra forma para o seguinte: á medida de um cliente tabela(CLIENTES) se Inscreve tabela(INSCRICAO) nas aulas tabela(AULAS) sera retirado 1 valor do atributo vagas da tabelaAULAS por exemplo uma aula de 25 vagas, ao um cliente se inscrever desconta uma aula e actualiza(UPDATE) para 24. Obrigado, Cumps Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 14, 2014 Use uma trigger. grosso Modo (precisa refinar) create or replace trigger trg_inscricaobefore insert or deleteON INSCRICAOreferencing new as new old as oldfor each rowdeclare VN NUMBER;begin if insert then vn := 1; else vn := -1; END IF; update aulas set vagas = vagas + vn WHERE ID_AULA = NVL(:NEW.ID_AULA,:OLD.ID_AULA;END; Compartilhar este post Link para o post Compartilhar em outros sites
HilarYo 0 Denunciar post Postado Fevereiro 14, 2014 Use uma trigger. Use uma trigger. Obrigado, uma vez que quero mexer em duas colunas, de diferentes tabelas ao mesmo tempo, optei por um procedimento: Procedimento para inserir clientes numa AULA: create or replace PROCEDURE ADD_INSCRIÇAO ( p_CLIENTE INSCRICAO.ID_CLIENTE%TYPE, p_AULA INSCRICAO.ID_AULA%TYPE) AS v_NINSCRICOES number(10); v_VAGAS number(10); BEGIN SELECT NINSCRICOES into v_NINSCRICOES FROM CLIENTES WHERE ID_CLIENTE=p_CLIENTE; SELECT VAGAS into v_VAGAS FROM AULAS WHERE ID_AULA=p_AULA; if (p_CLIENTE = 0) then dbms_output.put_line('ERRO: O ID do CLIENTE não existe'); elsif(p_AULA= 0) then dbms_output.put_line('ERRO: O ID da AULA não existe'); elsif (v_NINSCRICOES = 0)then dbms_output.put_line('ERRO: O CLIENTE JA NÃO SE PODE INCREVER'); elsif (v_VAGAS = 0) then dbms_output.put_line('ERRO: JÁ NÃO EXISTE VAGAS PARA A AULA'); else INSERT INTO INSCRICAO(DATA,ID_AULA,ID_CLIENTE) VALUES (to_date(sysdate, 'yyyy/mm/dd hh24:mi:ss'),p_AULA,p_CLIENTE); UPDATE AULAS SET VAGAS=VAGAS-1 WHERE ID_AULA=p_AULA; UPDATE CLIENTES SET NINSCRICOES=NINSCRICOES-1 WHERE ID_CLIENTE=p_CLIENTE; end if; end; Está a funcionar, apenas não funcionam todos os dbms_output.put_line('ERRO: JÁ NÃO EXISTE VAGAS PARA A AULA'); que deveriam de aparecer escrito no ecrã dbms_output.put_line('ERRO: JÁ NÃO EXISTE VAGAS PARA A AULA') Alguem sabe a solução Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 14, 2014 Se está usando o sql plus falta o set server output on; Outros programas tem a opção de ativar isto. Compartilhar este post Link para o post Compartilhar em outros sites
HilarYo 0 Denunciar post Postado Fevereiro 14, 2014 Já consegui muito obrigado :D set serveroutput on execute ADD_INSCRICAO(2,4); Compartilhar este post Link para o post Compartilhar em outros sites