maomelov Posted April 3, 2012 at 02:07 PM Report #447241 Posted April 3, 2012 at 02:07 PM Boa tarde, preciso de Criar um bloco PL/SQL para inserir números na tabela MESSAGES. Quero Inserir os números de 1 a 10, excluindo 6 e 8. Não sei como definir no if para excluir o 6 e o 8. O Script que fiz não exclui o 6 e 8, dá erro. Podem ajudar? --RESULTADO PRETENDIDO --------- 1 2 3 4 5 7 9 10 DECLARE VNUM NUMBER(2) :=1; BEGIN LOOP IF (VNUM >=1 AND VNUM <6) AND (VNUM >8 AND VNUM <11) AND VNUM=7 THEN INSERT INTO MESSAGES (RESULTS) VALUES (VNUM); DBMS_OUTPUT.PUT_LINE(VNUM); VNUM := VNUM + 1; EXIT WHEN VNUM = 11; END IF; END LOOP; END; /
José Lopes Posted April 3, 2012 at 10:27 PM Report #447382 Posted April 3, 2012 at 10:27 PM O ciclo chegava-te ao fim...é que a mim pendurou-me a sessão... cá para mim esse loop deve estar estragado... (olhando melhor a condição que queres nunca acontece porque usaste o and...em todas as condições) entretanto estive a ver, e o código que envio deve fazer a coisa... set serveroutput on --o meu servidor precisa disto.... DECLARE VNUM NUMBER(2) :=1; BEGIN for i in 1.. 10 loop if not i = 6 and not i = 8 THEN --faz o que tens a fazer DBMS_OUTPUT.PUT_LINE(i); END IF; END LOOP; END; Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!
jsWizard Posted April 4, 2012 at 10:30 PM Report #447637 Posted April 4, 2012 at 10:30 PM "O ciclo chegava-te ao fim...é que a mim pendurou-me a sessão... o ciclo nunca chega ao fim porque nunca entra no IF 😛 o ciclo começa com VNUM = 1.. depois o IF valida se é => 1 e < 6.. é! e > 8 e < 11, não é! portanto.. dá sempre FALSE, não entra no IF, nunca incrementa o VNUM.. ciclo infinito 😄 pahh.. claramente o código do José Lopes é bem mais claro e eficaz 😄 inté!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now