Insert ??

Fermé
bouhmid86 Messages postés 21 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 26 février 2011 - 26 nov. 2009 à 00:28
 fiu - 26 nov. 2009 à 00:54
Bonjour,
salut je debute en pl sql ,j'ai un exercice dont le quelle il me demande d'insirer les employées de la table EMP vers la table EMPLOYE par une instruction sachant que la table EMP contient les champs suivant empno ,sal,comm et deptno alors que la table EMPLOYE contient que empno ,sal et comm dans la solution il a fait :
insert into EMPLOYE selct empno,sal,comm from EMP;
j'ai pas comprit comment il va inserer tout les employes de la table EMP vers EMPLOYE par une seule insrtuction? j'ai crut que cela necessite un curseur pour inserer tous les employeés!!!!

aidez moi svp et merci d'avence pour tous :)))

1 réponse

Salut

le curseur est géré manuellement quand on a besoin d'intervenir dessus.
Mais si le résultat d'une requête peut être envoyé directement dans une table, pourquoi s'en priver
donc si tu as
1. EMP(EMPNO, SAL, COMM, DEPTNO)
2. EMPLOYE(EMPNO, SAL, COMM)
et que tu fasses INSERT INTO EMPLOYE SELECT EMPNO, SAL, COMM FROM EMP
1. la base va construire un curseur interne (EMPNO, SAL, COMM) avec autant de lignes qu'il y en a dans EMP
2. il va, en une transaction, chercher à insérer toutes ces lignes dans EMPLOYE. Comme les types des colonnes sont certainement en correspondance, il n'y aura pas de souci (un peu comme si tu faisais un copier/coller d'une région d'une feuille de calcul dans une autre feuille). Par contre s'il y a des contraintes sur EMPLOYE et que certaines données du curseur ne respectent pas les contraintes, alors l'intégralité du curseur sera refusée. Si le but est (dans ce cas) d'en récupérer un maximum, alors là on travaille avec un curseur explicite et on commit chaque insertion
0