BEGIN
FOR l_counter IN 1..10
LOOP
insert into mails
VALUES (i);
--continue WHEN 6 AND 8;
END LOOP;
commit;
END;
3 Réponses :
Avez-vous besoin ci-dessous -
BEGIN
FOR l_counter IN 1..10
LOOP
IF l_counter IN (6, 8) THEN
CONTINUE;
END IF;
insert into mails
VALUES (l_counter);
END LOOP;
commit;
END;
En effet, vous n'avez pas besoin d'un bloc PL / SQL, l'utilisation d'un SQL-Insert suffit comme
SQL> insert into mails
select * from
(
select level as lvl
from dual
connect by level <= 10
)
where lvl not in (6,8);
SQL> commit;
Vous pouvez faire
MERGE INTO MAILS m
USING (SELECT LEVEL AS N
FROM DUAL
WHERE LEVEL NOT IN (6,8)
CONNECT BY LEVEL <= 10) d
ON (m.VAL = d.N)
WHEN NOT MATCHED THEN
INSERT VALUES (N);
ou simplement dire
INSERT INTO MAILS
SELECT LEVEL
FROM DUAL
WHERE LEVEL NOT IN (6,8)
CONNECT BY LEVEL <= 10
Ou il y a toujours
BEGIN
FOR n IN 1..10 LOOP
IF n NOT IN (6,8) THEN
insert into mails
VALUES (n);
END IF;
END LOOP;
commit;
END;
bonne prise..! Quand j'ai considéré connecter par niveau <= 10 et niveau pas dans (6,8) qui a échoué et j'ai abandonné cette option sans sous-requête, voyez maintenant que vous avez pris où clause...