Bloc PL/SQL intégrant les requêtes SQL
on a deux tables ETUDIANT(numet, Nom, #NumBloc ) et
BLOC(NumBloc, effectifBloc)
Citation:
1-Définir un bloc PL/SQL intégrant les requêtes SQL nécessaires et permettant d'insérer dans la relation BLOC les tuples constitués du numéro de bloc et son effectif calculé.
2-Terminer le programme en validant la transaction par la commande COMMIT.
NB: on doit faire en deux cas .le premier sans l'utilisation de curseur et le second en utilisant le curseur [/QUOTE]
Merci beaucoup pour ton aide
Citation:
Envoyé par
plaineR
Merci d'utiliser les balises CODE (# dans la barre d'outils), pour améliorer la lisibilité de ton code ;)
Bon, c'est pas bon du tout ce que tu as fait.
1è cas : sans curseur :
le "IF ETUDIANT%FOUND" ne veut rien dire. Il faudrait que "EDTUDIANT corresponde à un curseur. Ce qu'il faut que tu fasses, c'est que tu testse si ta requête insert a trouvé au moins un enregistrement.
Pour cela tu peux utiliser :
Code:
if sql%notfound then ...
Par ailleurs je te conseille de toujours nommer tes colonnes quand tu fais un insert :
Code:
INSERT INTO BLOC(NumBloc, effectifBloc) ....
2è cas : avec curseur :
Déjà tu aurais du tenir compte de la remarque de McM et lire le tuto que je t'avais donné : le exit ne sert à rien.
Après tu as 2 solutions :
- si tu utilises un for, tu as besoin d'une variable pour indiquer si tu as au moins un enregistrement :
Code:
1 2 3 4 5 6 7
| v_exist := false;
for mavar in moncurseur loop
v_exist := true;
...
end loop;
if not v_exist then
insert into ... |
- si tu utilises la syntaxe open ... fetch, il faut que tu testes avant de fermer ton curseur :
Code:
if moncurseur%found then ...
MERCI