bonjour ,
en termes de performances , de normalisation et de maintenance qu'elle est le meilleur choix dans un bloc PL/SQL :
Curseur implicite ou explicite.
avantages et inconvénients de chacun ?
merci
bonjour ,
en termes de performances , de normalisation et de maintenance qu'elle est le meilleur choix dans un bloc PL/SQL :
Curseur implicite ou explicite.
avantages et inconvénients de chacun ?
merci
Un curseur implicite ou explicite reste un curseur! Si ce sujet vous intéresse lisez l'article "doing sql from pl/sql worst and best practices" sur OTN.
Salut,
Le curseur explicite permet de faire bulk collect, puis for all.
S'il n'y a pas de mise à jour d'insertions directes à faire, le curseur implicite fait un bulk fetch automatique (je crois paramétré à 100) depuis 10g je crois...
Le curseur implicite est plus léger en terme de lisibilité et écriture de code.
C'est ce que je privillégie pour faire des choses simples et pas trop volumineuses.
Le curseur qu’il est implicite ou explicite permet de remplir une collection via le bulk fetch. L’instruction ForAll s’applique aux collections peu importe comment elles ont été remplies (via un curseur ou construite "manuellement").
L’optimisation que PL/SQL fait par-dessous de la table dans une boucle For utilisant un curseur implicite n’est pas synonyme de remplissage d’une collection mais c’est plutôt un « array fetch ».
Cela étant dit il y a des différences bien plus subtiles que ça d’où ma recommandation de lire l’article.
Oui tu as raison Mnitu sur le forall, il est parfaitement possible d'alimenter à la main sa collection.
Sur le curseur implicite, je sais bien que ça remplit pas automatiquement une collection, c'est pour ça je disais "bulk fetch"
... cela dit, en soi, le principal intérêt du bulk collect est l'array fetch, non ?
Partager