Bir imleç açık veya kapalı olabilir ve her iki tür de bir FOR döngüsünde kullanılabilir. Sorunuzun gerçekten iki yönü var.
Neden örtülü bir imleç FOR döngüsü üzerinde açık bir imleç FOR döngüsü kullanıyorsunuz?
- Sorgu yeniden kullanılacaksa açık bir imleç FOR döngüsü kullanın, aksi takdirde örtük bir imleç tercih edilir.
Neden açık bir FETCH olmayan bir FOR döngüsü yerine FETCH ile bir döngü kullanmalıyım?
- Toplu olarak toplamanız gerektiğinde veya dinamik SQL'e ihtiyacınız olduğunda bir döngü içinde FETCH kullanın.
Belgelerden bazı faydalı bilgiler.
LOOP İÇİN Örtülü İmleç Örneği
BEGIN
FOR vItems IN (
SELECT last_name
FROM employees
WHERE manager_id > 120
ORDER BY last_name
)
LOOP
DBMS_OUTPUT.PUT_LINE ('Name = ' || vItems.last_name);
END LOOP;
END;
/
Açık Döngü FOR LOOP Örneği
DECLARE
CURSOR c1 IS
SELECT last_name
FROM employees
WHERE manager_id > 120
ORDER BY last_name;
BEGIN
FOR vItems IN c1 LOOP
DBMS_OUTPUT.PUT_LINE ('Name = ' || vItems.last_name);
END LOOP;
END;
/
Örtük İmleç
Örtük bir imleç PL / SQL tarafından oluşturulan ve yönetilen bir oturum imlecidir. PL / SQL, SELECT veya DML deyimlerini her çalıştırdığınızda örtük bir imleç açar. Örtük bir imleci denetleyemezsiniz, ancak özniteliklerinden bilgi alabilirsiniz.
Örtük bir imleç ilişkili ifadesi çalıştıktan sonra kapanır; ancak, özellik değerleri başka bir SELECT veya DML ifadesi çalışana kadar kullanılabilir durumda kalır.
Örtük imleç öznitelikleri şunlardır: SQL% ISOPEN, SQL% FOUND, SQL% NOTFOUND, SQL% ROWCOUNT, SQL% BULK_ROWCOUNT, SQL% BULK_EXCEPTIONS
Açık İmleç
Açık bir imleç, oluşturup yönettiğiniz bir oturum imlecidir. Açık bir imleci tanımlayıp tanımlamanız, ona bir ad vermeniz ve bir sorgu ile ilişkilendirmeniz gerekir (genellikle, sorgu birden çok satır döndürür). Daha sonra sorgu sonuç kümesini aşağıdaki yollardan biriyle işleyebilirsiniz:
Açık imleci (OPEN deyimi ile) açın, sonuç kümesinden satırları getirin (FETCH deyimi ile) ve açık imleci kapatın (CLOSE deyimi ile).
Bir imleç FOR LOOP deyiminde açık imleci kullanın (bkz. "LOOP İfadeleri İçin İmleç ile Sorgu Sonuç Kümesi İşleme").
Açık bir imlece değer atayamaz, bunu bir ifadede kullanamaz veya resmi bir alt program parametresi veya ana bilgisayar değişkeni olarak kullanamazsınız. Bunları bir imleç değişkeni ile yapabilirsiniz (bkz. "İmleç Değişkenleri").
Örtük bir imlecin aksine, açık bir imleç veya imleç değişkenine adıyla başvurabilirsiniz. Bu nedenle, açık bir imleç veya imleç değişkenine adlandırılmış imleç denir.
LOOP İfadeleri İÇİN İmleç
İmleç FOR LOOP deyimi, bir SELECT deyimi çalıştırmanıza ve ardından hemen sonuç kümesinin satırları arasında geçiş yapmanıza olanak tanır. Bu ifade örtük veya açık bir imleç kullanabilir.
FOR
imleçleri kullanmanın başka bir yoludur. Dokümanlara bakın: docs.oracle.com/cd/E11882_01/appdev.112/e10472/… Her neyse, htp.prn () ne yapar?