Oracle: manipulation du curseur avec oracle

hammag -  
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   -
bonjour,

voici mon problème :
je cherche à remplir avec des données une table TAB2, cette dernière table contient un champ id que je doit le récuperer dans une autre table TAB1.

j'ai cherché sur le web et j'ai trouvé que le curseur est la réponse à ma question. Donc, j'ai essayé avec cette requête :
[CODE]
DECLARE id varchar(10); CURSOR curseur1 IS SELECT oprid FROM TAB1;
BEGIN
OPEN curseur1;
LOOP
FETCH curseur1 INTO id;
insert into TAB2 ('xxx', id, 'yyy')
EXIT WHEN curseur1%NOTFOUND;
END LOOP;
END;

[/CODE]

mais ca marche pas,

svp, j'ai besoin d'aide:help:
A voir également:

6 réponses

sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
Salut,

Corrige ceci:
insert into TAB2 ('xxx', id, 'yyy') ;
(point-virgule à la fin)

Sinon, pourquoi ne pas utiliser simplement un
insert into TAB2 (col1, col2, col3) select ('xxx', id, 'yyy') from TAB1
où col1, col2 et col3 sont les noms des 3 colonnes conernées ?

++
0
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
[Edit]

insert into TAB2 (col1, col2, col3) select ('xxx', oprid, 'yyy') from TAB1
0
hammag
 
non, en fait je veux copier juste un champ de la table TAB1 : id,
les deux autre champs ne sont pas dans TAB1.
0
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
Justement c'est pour cela que je les ai mis entre quotes. Ce ne sont pas des colonnes de TAB1 mais des constantes. On peut très bien avoir une table TAB1 ayant une seule colonne (oprid) et faire un select retournant 3 colonnes comme ci-dessus
0

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

Posez votre question
hammag
 
ok merci,

mais cette fois j'ai l'erreur :
Error report:
SQL Error: ORA-00907: Parenthèse de droite absente
00907. 00000 - "missing right parenthesis"
*Cause:

pourtant la requête est bone :

insert into TAB2 (col1, col2, col3) select ('xxx', oprid, 'yyy') from TAB1;



?
0
sandul Messages postés 3927 Date d'inscription   Statut Membre Dernière intervention   723
 
oups, on va s'occuper des parenthèses, il y en a trop :

insert into TAB2 (col1, col2, col3) select 'xxx', oprid, 'yyy' from TAB1;

:-)
0