Oracle: manipulation du curseur avec oracle

Fermé
hammag - 11 sept. 2009 à 15:48
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 - 11 sept. 2009 à 17:01
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:

6 réponses

sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
11 sept. 2009 à 16:30
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 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
11 sept. 2009 à 16:32
[Edit]

insert into TAB2 (col1, col2, col3) select ('xxx', oprid, 'yyy') from TAB1
0
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 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
11 sept. 2009 à 16:47
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
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 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
11 sept. 2009 à 17:01
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