Bonjour,

Voila j'ai réaliser la requete suivante en pl/Sql le pb c'est que l'insertion ne se fait pas... Quelqu'un a une idée ?

Merci...

Requete :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
DECLARE
CURSOR RowsToInsert IS
    SELECT distinct etape, rp.famille, substr(RC.blabla,6,2)  from recette RC, Produit rp
    WHERE RC.nom = rp.nom
    AND rp.famille like 'Gateau%'
    AND substr(rc.blabla,7,1) NOT IN ('U', 'J')
      ;
      sSql VARCHAR2(4000);
 
BEGIN
 
        FOR cur IN RowsToInsert LOOP
          BEGIN
                      sSql := 'INSERT INTO ETAPE_REF_TABLE ( etape, famille, cuisson, eqt, degres) ';
                      sSql := sSql || 'VALUES (' || cur.etape || ',' || cur.famille || ', NULL, NULL, NULL ) ' ;
                      sSql := sSql || 'WHERE NOT EXISTS (SELECT 1 FROM ETAPE_REF_TABLE WHERE etape = ''' || cur.etape''' );' ;
                      DBMS_OUTPUT.Put_Line('Requête a exécuter : ' || sSql);
                      ExecSQL (sSql);
                      ssql :='';
          END;  
        END LOOP;
 
 
END;
La procédure stoquée ExecSQL (s as string) fonctionne très bien car d'autre personnes s'en servent.

En gros ma requete revient a faire ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
INSERT INTO ETAPE_REF_TABLE 
 
(ETAPE,FAMILLE,Cuisson,eqt,degres)
 
VALUES ('Casse Oeuf,'gateau',NULL,NULL,NULL) WHERE NOT EXISTS ( SELECT 1 FROM ETAPE_REF_TABLE WHERE STAGE='Casse Oeuf'
 
);
Il me dit que la commande ne s'est pas terminée correctement. Je vois pas trop le problème sachant que je veux insérer dans cette table cet élément si il n'existe pas...

Si quelqu'un peut m'aider dans mon avancé merci d'avance...