Bonsoir à tous,
Voila j'ai une question concernant le PL/SQL avec SQL3. Alors voici mon code:
1 2 3 4 5 6 7 8 9
| create or replace procedure test as
BEGIN
FOR refInLesPBases IN (Select ref(p) From LesPBases p Where p.mat = (Select ref(m) From LesMatieres m Where m.nom = 'bois'))
LOOP
Insert into TABLE (Select m.pBaseList From LesMatieres m Where m.nom = 'bois')
Values (refInLesPBases);
END LOOP;
END;
@compile |
Ça serait trop long d'expliquer la structure des tables et des objets, mais en gros tout ce qu'il faut savoir c'est que cette requête dans le IN:
Select ref(p) From LesPBases p Where p.mat = (Select ref(m) From LesMatieres m Where m.nom = 'bois')
Renvoie une liste de références que j'ai besoin d’insérer dans la boucle. Le seul problème c'est que lorsque j’exécute cette procédure j'ai une erreur: Oracle me dit qu'il attend une référence alors qu'il reçoit un type char. Je pense donc que la procédure PL/SQL fait une conversion implicite, c'est pourquoi j'ai vu qu'il existe un mot clé en PL qui permet d’éviter de convertir une référence : NOTYPE, mais je n'ai pas très bien compris comment on l'utilise et encore moins dans une boucle.
Pourriez vous m'aider svp?
Merci d'avance
Partager