Pb d'insert en pl/sql

Yann -  
 Yann -
Bonjour,

un truc tout bete : sans le INSERT, ca marche, mais pas avec ????

BEGIN
sql_cmd:='CREATE TABLE TMP_ACCOUNT_T (OBJ_ID0 NUMBER(38), REC_ID NUMBER(38), REC_ID2 NUMBER(38))';
execute immediate sql_cmd;

OPEN supp_cur;
LOOP
FETCH supp_cur into objid0, recid, recid2;
EXIT WHEN supp_cur%NOTFOUND;
DELETE ACCOUNT_PHONES_T WHERE obj_id0 = objid0 AND rec_id = recid AND rec_id2 = recid2;
INSERT INTO TMP_ACCOUNT_T (OBJ_ID0, REC_ID, REC_ID2) values (objid0,recid,recid2);
END LOOP;
CLOSE supp_cur;
END;

si qqun a une idee ? merci d'avance

5 réponses

stfm Messages postés 60 Statut Membre 16
 
Salut,

J'vais p'tet dire une betise qui n'a rien a voir, mais il me semble que la bonne syntaxe pour un delete est DELETE FROM matable et non DELETE matable...
Voilu, sinon pour le reste je ne vois pas de probleme.......

stf
0
Yann
 
Le probleme ne vient pas de la !!!

que tu mettes delete from ou delete tout court, ca marche !!!

le pb vient du INSERT
0
yanban
 
et si tinverse les lignes insert et delete ?

Et d'abord c koi l'erreur ?
0
DaNot Messages postés 221 Statut Membre 163
 
Salut,

Le probleme peut venir des types de données. La syntaxe du insert semble correct.
Comme aucune variable n'a été déclarée (ou il manque la partie déclaration), ORACLE doit prendre un type par défaut non compatible avec le type de données de ta colonne.
Pour palier à ce problème de type, essayes de déclarer tes variables :
objid0 TMP_ACCOUNT_T.OBJ_ID0%Type;
recid TMP_ACCOUNT_T.REC_ID%Type;
recid2 TMP_ACCOUNT_T.REC_ID2%Type;

DaNot
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Yann
 
Pour tout ceux qui ont bien voulu m'aider, et que ca interesse, g eu la reponse a ma question...et c bon a savoir...

En fait dans un PL/SQL, avant execution de la requete, il y a analyse sémentique et syntaxique...
Dans mon cas, je crée une table, puis je fais un insert dedans...or lors de l'analyse, la table n'est pas encore créée car le create n'a pas encore ete executé, donc c comme si j'essayais de faire un insert dans une table qui n'existe pas. La solution : faire la creation de ma table avant le declare...

Merci en tout cas a vous !
0