2016-12-01 6 views
0

zu schließen. Bitte beachten Sie das folgende Verfahren. Ich habe den Cursor nicht geschlossen und es funktioniert gut. Fehle ich hier etwas? Muss der Cursor geschlossen werden oder schließt Oracle ihn automatisch?Ist es zwingend erforderlich, den Cursor im PLSQL-Block

create or replace procedure 
pr_cursor_test is 
cursor emp_cur is select empno,ename from emp; 
emprec emp_cur%rowtype; 
begin 
Open emp_cur; 
Loop 
Fetch emp_cur into emprec; 
exit when emp_cur%notfound; 
--Do Something 
dbms_output.put_line(emprec.ename); 
end loop; 
end; 

Dank

Antwort

0

This article on Oracle website ist darüber ziemlich klar.

Wenn Sie einen Cursor in einem Paket deklarieren (das heißt, nicht in einem Unterprogramm des Pakets) und die Cursor geöffnet werden, wird es geöffnet bleiben, bis Sie es explizit schließen oder die Sitzung beendet wird.

Wenn sich der Cursor in einem Vereinbarungsteil deklariert wird (und nicht in einem Paket ) wird Oracle Database auch automatisch schließen, wenn der Block, in dem es beendet wird deklariert wird. Es ist jedoch immer noch eine gute Idee, den Cursor explizit selbst zu schließen. Wenn der Cursor in ein Paket verschoben wird, haben Sie den jetzt notwendigen CLOSE bereits an Ort und Stelle. Und wenn es lokal ist, dann zeigt auch eine CLOSE-Anweisung andere Entwickler und Ihren Manager, die Sie beachten.

In Code Beispiel CURSOR wird als Teil des Verfahrens (nicht als Teil des Pakets), erklärt, was bedeutet, wird automatisch beim Verfahren executioin abgeschlossen Cursor geschlossen. Allerdings ist es am besten Codierung Praxis CLOSE cursor Anweisung, wenn Sie OPEN cursor Anweisung im Code haben. Es macht Code in Zukunft einfach zu verstehen und zu unterstützen.

Verwandte Themen