|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 8 ![]() |
Bonjour,
le problème est le suivant : j'ai un script PL/SQL qui permet d'alimenter une table depuis une autre. Dans ce script, une procédure crée une table temporaire et l'alimente avec les données sources. Ensuite je dois parcourir cette table pour alimenter la cible (boucle LOOP avec des INSERT). La table temporaire est détruite à la fin du script. Au lancement du script donc, la table temporaire n'existe pas. Et donc le curseur qui pointe dessus pose problème et j'ai l'erreur TABLE INEXISTANTE au lancement. J'ai d'abord déclaré le curseur dans le DECLARE. Puis aussi après la procédure avec la syntaxe suivante pour ruser un peu mais le problème est identique : Code :
Merci d'avance de votre aide si vous avez une idée ! |
||
|
|
00
|
|
|
#2 | |||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Tu utilises les tables temporaires comme dans SqlServer mais c'est différent sur Oracle, cf asktom sur les tables temporaires.
Citation:
Sinon concernan l'insert, le curseur semble inutile, il vaut mieux juste un insert : Code :
http://asktom.oracle.com/pls/apex/f?...15826034070548 |
|||
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() ![]() Franck PachotDBA Oracle Inscription : novembre 2007 Messages : 703 ![]() |
Bonjour,
Pour créer une procédure qui utilise une table qui n'existe pas encore, il faut faire du SQL dynamique. Mais pour une table temporaire, sous Oracle, il ne faut pas la créer à chaque fois, mais créer une Global Temporary Table. Cordialement, Franck.
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
|
|
00
|
|
|
#4 | |||
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 8 ![]() |
Citation:
Sinon mon curseur me sert à parcourir les lignes une à une. J'en ai besoin car en cas de rejet d'insertion sur une ligne je récupère certaine infos (ROWID...). |
|||
|
|
00
|
|
|
#5 | |||
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 8 ![]() |
Citation:
Code :
|
|||
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Il y a pas mal de chose dans la doc notemment si tu veux BULK LOADER : Native Dynamic SQL
voici un exemple : Code :
|
||
|
|
10
|
|
|
#7 | |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 8 ![]() |
Citation:
Quant à la suppression moi non plus je ne vois pas l'intérêt mais je me plie aux normes de devs |
|
|
|
00
|
|
|
#8 | |||
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 8 ![]() |
Citation:
Le problème c'est que je parcours le curseur de type MA_TABLE%rowtype. Donc quand je lance la procédure avec en paramètre l_rec.ROWID il ne le connait pas évidemment. Merci de votre aide. |
|||
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Utilisez un curseur modèle pour déclarer le rowid
Code :
|
||
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 8 ![]() |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com