J'ai le curseur suivant (quelque chose comme ça de toute façon) que j'utilise pour copier des entrées pour une table qui fait partie d'une relation plusieurs à plusieurs. J'ai besoin des nouveaux ID générés lors de l'instruction INSERT INTO B pour mettre à jour une table de jonction avec. Comment puis-je capturer la valeur b_id après l'insertion à utiliser dans la deuxième instruction INSERT?attraper les ID créés dans la boucle du curseur
1
A
Répondre
4
Utilisez le RETURNING clause:
DECLARE
v_bid B.b_id%TYPE;
BEGIN
FOR rec IN (SELECT id
FROM A
WHERE group_id = 7)
LOOP
INSERT INTO B (b_id, thing2, ...stuff...) RETURNING b_id INTO v_bid;
INSERT INTO C (rec.id, /* new ID generated by previous insert statement */
COMMIT;
END LOOP;
END;
Cela dit, il est possible que cette opération pourrait être réalisée sans l'utilisation d'un curseur.
Questions connexes
- 1. Utilisation du curseur dans une boucle d'une procédure stockée
- 2. Boucle avec ID unique?
- 3. framework d'entité - récupérer les ID créés par savechanges
- 4. en boucle grâce à des contrôles dynamiquement créés dans jquery
- 5. Erreur dans la déclaration du curseur
- 6. boucle à travers la nouvelle div comme ils sont créés
- 7. Voir les informations sur la fonction du curseur dans NetBeans
- 8. Programatically changer la vitesse du curseur dans les fenêtres
- 9. différence entre un curseur en boucle et en boucle cursor.fetchall dans la ligne des requêtes
- 10. en utilisant la boucle FOR pour attraper des multiples du même nombre
- 11. Attraper les onglets dans TextArea
- 12. Trouver la position du curseur
- 13. Créer une boucle de curseur JS
- 14. boucle à travers tous les ID commençant par XXX
- 15. boucle de curseur et la déclaration continue: comportement inattendu
- 16. Javascript: cacher les méthodes du prototype dans la boucle?
- 17. Android: résultats du curseur à la chaîne []
- 18. Essayez Attraper - pas attraper
- 19. Convertir PLSQL curseur de la syntaxe à boucle TSQL
- 20. Curseur pendant que la boucle renvoie toutes les valeurs sauf la dernière
- 21. Ajout d'un deuxième curseur au contrôle du curseur dans WPF
- 22. Attraper une boucle d'e-mail à partir d'un agent d'absence du bureau
- 23. Attraper les exceptions polymorphically
- 24. La boucle sur les listes dans cf9
- 25. comment attraper OptimisticLockException dans la couche Web
- 26. Oracle: Curseur dans Curseur
- 27. Attraper les erreurs http
- 28. XSLT - Attraper les paramètres
- 29. Coordonnées du curseur EditText
- 30. Détecter l'emplacement du curseur
Connaissait la clause de retour! Merci. C'est un exemple un peu artificiel de ce sur quoi je travaille et pour lequel je crois avoir besoin d'un curseur. – Casey
@Casey: Figuré autant, il suffit de le mettre sur le curseur. IIRC, Oracle a soutenu la clause RETURNING depuis 9i. PostgreSQL le supporte aussi. –