|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 7 ![]() |
Bonjour
J'ai un petit problème auquel je vois deux solutions, mais je ne sais pas trop ce qui est le mieux Je dois créer 1 (n) enregistrements à partir d'enregistrement existants dans deux tables de 300+ et 900+ champs. je me vois donc mal fair un select t.C1, T.C2 ......T.c900 from T en modifiant poncteullement une 10aine de champs. Je pensais donc faire un curseur en PL/SQL à partir d'un select * le fetcher dans une variable%ROWTYPE, modifier ponctuellement les champs (notament PK et d'autres) et réinjecter la nouvelle ligne. Problème : je ne vois pas comment insérer le contenu de ma variable%ROWTYPE sans énumérer tous les champs. Deuxième solution un peu plus lourde, faire un create like de ma table en table tmp, copier l'enregistrement, le modifier et faire un INSERT. La première solution me semnle plus élégante mais peu^t être pas possible. Quelqu'un a t'il une réponse ou une autre solution? Merci d'avance |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 320 ![]() |
SQL Developper, Pl/SQL Developper, probablement TOAD et autres applications similaires sont capables de générer le select de 900 zones bien plus vite que tu écriras ton code.
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : janvier 2007 Messages : 7 ![]() |
Je me suis mal exprimé ... Je dois faire ça en PL/SQL, c'est une procédure de correction périodique
|
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 320 ![]() |
|
|
|
00
|
|
|
#5 | ||
|
Membre confirmé
![]() |
Pourquoi ne pas faire suivre un Update d'un insert?
Code :
__________________
|
||
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Salut !
Ce que te dis mnitu, c'est que TOAD peut te générer la requête, que tu vas pouvoir ensuite copier coller dans ton code : Browse schema -> clic droit sur ta table -> generate statement -> select Là Oracle te dit "Script copied to the clipboard". Tu vas dans ton éditeur de code PL SQL, et tu fais "CTRL - V". Puis tu remplace ce que tu veux par des variables... Bon, si tu y tiens vraiment, tu peux t'ouvrir un curseur sur : Code :
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
||
|
00
|
|
|
#7 |
|
Membre éclairé
![]() Inscription : août 2005 Messages : 316 ![]() |
si la table destination est la même (je n'ai pas compris si du faisait lecture d'une table de 900 colonne et insert dans une table de 300, ou si tu devais faire le même genre de traitement sur les deux tables)
normalement tu peut faire un insert avec ton enregistrement modifié: insert into ta_table values(enrg_rowtype); je ne sais plus s'il il faut des parenthese et a partir de quel version d'oracle c'est dispo |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com