Pb d'insert en pl/sql

Fermé
Yann - 14 oct. 2003 à 20:41
 Yann - 16 oct. 2003 à 18:05
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 Date d'inscription jeudi 7 mars 2002 Statut Membre Dernière intervention 8 mars 2004 16
15 oct. 2003 à 07:23
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
Le probleme ne vient pas de la !!!

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

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

Et d'abord c koi l'erreur ?
0
DaNot Messages postés 221 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 4 novembre 2005 163
16 oct. 2003 à 11:29
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
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