Ачык курсор жана ачык курсор
Маалымат базаларына келгенде, курсор маалымат базасындагы жазуулардын үстүнөн өтүүгө мүмкүндүк берген башкаруу структурасы. Курсор SQL тандоо билдирүүсүнө ат ыйгаруу механизмин камсыз кылат, андан кийин аны ошол SQL операторунун ичиндеги маалыматты башкаруу үчүн колдонсо болот. Так аныкталган курсор жок болгондо, PL/SQLде Select билдирүүсү чыгарылган сайын ачык курсорлор автоматтык түрдө түзүлөт жана колдонулат. Ачык курсорлор, аты айтып тургандай, иштеп чыгуучу тарабынан так аныкталат. PL/SQLде ачык-айкын курсор, чынында, курсор ачкыч сөзүнүн жардамы менен аныкталган аталган суроо.
Имплицит курсор деген эмне?
Имплицит курсорлор автоматтык түрдө Oracle тарабынан тандалган билдирүү чыгарылган сайын түзүлүп, колдонулат. Эгерде жашыруун курсор колдонулса, Берилиштер базасын башкаруу системасы (DBMS) ачуу, алуу жана жабуу операцияларын автоматтык түрдө аткарат. Жашыруун курсорлор бир сапты кайтарган SQL билдирүүлөрү менен гана колдонулушу керек. Эгерде SQL билдирүүсү бирден ашык сапты кайтарса, ачык курсорду колдонуу катага алып келет. Жашыруун курсор ар бир Data Manipulation Language (DML) билдирүүлөрү менен, тактап айтканда INSERT, UPDATE жана DELETE билдирүүлөрү менен автоматтык түрдө байланышкан. Ошондой эле, SELECT INTO билдирүүлөрүн иштетүү үчүн имплициттүү курсор колдонулат. Жашыруун курсорлорду колдонуу менен берилиштерди алууда NO_DATA_FOUND өзгөчө кырдаалды SQL билдирүүсү эч кандай маалыматтарды кайтарып бербегенде көтөрүүгө болот. Андан тышкары, SQL билдирүүсү бирден ашык сапты кайтарганда, имплициттүү курсорлор TOO_MANY_ROWS өзгөчө учурларды көтөрүшү мүмкүн.
Ачык курсор деген эмне?
Мурда айтылгандай, ачык курсорлор ат менен аныкталган сурамдар. Ачык курсорду жазуулардын жыйындысына көрсөткүч катары кароого болот жана көрсөткүчтү жазуулар топтому ичинде алдыга жылдырууга болот. Ачык курсорлор колдонуучуга маалыматтарды ачуу, жабуу жана алуу боюнча толук көзөмөлдү камсыз кылат. Ошондой эле, ачык курсордун жардамы менен бир нече саптар алынышы мүмкүн. Ачык курсорлор да каалаган функция же процедура сыяктуу эле параметрлерди кабыл алышы мүмкүн, ошондуктан курсордогу өзгөрмөлөр ал аткарылган сайын өзгөртүлүшү мүмкүн. Мындан тышкары, ачык курсорлор PL/SQL жазма өзгөрмөсүнө бүт сапты алып келүүгө мүмкүндүк берет. Ачык курсорду колдонууда, адегенде аны ат менен жарыялоо керек. Курсордун атрибуттарына курсорго берилген ат менен кирүүгө болот. Жарыялангандан кийин, биринчи курсорду ачуу керек. Андан кийин тартууну баштаса болот. Эгер бир нече саптарды алуу керек болсо, алуу операциясы цикл ичинде аткарылышы керек. Акырында курсорду жабуу керек.
Ачык курсор менен ачык курсордун айырмасы
Жашыруун курсор менен ачык курсордун негизги айырмасы - бул ачык курсордун аталышын көрсөтүү менен ачык-айкын аныкталышы керек, ал эми сиз тандоо билдирүүсүн чыгарганда ачык курсорлор автоматтык түрдө түзүлөт. Андан тышкары, ачык курсорлор аркылуу бир нече саптарды алууга болот, ал эми ачык курсорлор бир гана сапты ала алат. Ошондой эле NO_DATA_FOUND жана TOO_MANY_ROWS өзгөчөлүктөр ачык курсорлордон айырмаланып, ачык курсорлорду колдонууда көтөрүлбөйт. Негизи, ачык курсорлор маалымат каталарына көбүрөөк дуушар болушат жана ачык курсорлорго караганда программалык башкарууну азыраак камсыздайт. Ошондой эле, ачык курсорлор ачык курсорлорго караганда эффективдүү эмес деп эсептелет.