Olá boa tarde a todos, tenho uma duvida.
Tenho algumas duvidas bem basicas mesmo, procurei no forum em outros tópicos e não encontrei.
Tenho um formulario onde existe um campo multi record com uma checkbox para cada item, para trabalhar com esses eu uso um loop e recupero na os dados referentes. existe outra maneira mais otimizada sem ser com loop?
Tambem no mesmo forms ao precionar um button ele dispara um evento onde faz uma consulta no banco que retorna varias linhas, pega esse resultado e faz um insert em outra tabela. já tentei usar cursor loop mas não consegui fazer a danada funcionar.
alguém pode me dar uma luz?
Se alguém souber fazer como cursor e puder dar um exemplo ficarei grato.
trecho do Código
-------------------------------------------------------------------------
-- Select de questões aleatorias
FOR REG IN (select id_questao from ( select q.id_questao id_questao
from questao q, assunto a
where q.id_assunto = a.id_assunto
and q.ind_nivel = 1
and q.id_assunto = 1
order by dbms_random.value )
where rownum <= 2 ) LOOP
insert into PROVA_QUESTAO ( ID_PROVA_QUESTAO, ID_PROVA, ID_QUESTAO)
values (SEQ_PROVA_QUESTAO.nextval, 33, REG.ID_QUESTAO);
commit;
NEXT_RECORD;
END LOOP;
Dvida com query e campo multi record.
- sergio.areas
- Rank: Estagiário Sênior
- Mensagens: 14
- Registrado em: Seg, 15 Mar 2010 9:12 pm
- Localização: Rio de Janeiro
- Contato:
Vergonha não é o não saber e sim não procurar uma solução
-
- Rank: Estagiário Pleno
- Mensagens: 5
- Registrado em: Ter, 05 Out 2010 12:03 pm
- Localização: Blumenau-SC
"Utrapassar os limites, apenas isso!"
Você pode fazer o seguinte. Com base em seu cursor, vai lá e cria um e com base nas informações ele atualiza a sua tabela PROVA_QUESTAO. É necessário garantir que o cursor vai retornar mais de 1 registro para isso. Segue abaixo um exemplo:
CURSOR CR_0001 IS
SELECT ID_QUESTAO
FROM (SELECT Q.ID_QUESTAO ID_QUESTAO
FROM QUESTAO Q, ASSUNTO A
WHERE Q.ID_ASSUNTO = A.ID_ASSUNTO
AND Q.IND_NIVEL = 1
AND Q.ID_ASSUNTO = 1
ORDER BY DBMS_RANDOM.VALUE )
WHERE ROWNUM <= 2;
RW_0001%CR_0001ROWTYPE;
BEGIN
OPEN CR_0001;
LOOP
FETCH CR_0001
INTO RW_0001;
EXIT WHEN CR_0001%NOTFOUND;
INSERT INTO PROVA_QUESTAO ( ID_PROVA_QUESTAO, ID_PROVA, ID_QUESTAO)
VALUES (SEQ_PROVA_QUESTAO.NEXTVAL, 33, RW_0001.ID_QUESTAO);
END LOOP;
CLOSE CR_0001;
END;
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 16 visitantes