একটি কার্সার স্পষ্ট বা অন্তর্নিহিত হতে পারে, এবং উভয় প্রকারের জন্য একটি লুপ ব্যবহার করা যেতে পারে। আপনার প্রশ্নের আসলে দুটি দিক রয়েছে।
লুপের জন্য একটি অন্তর্নিহিত কার্সারের উপরে লুপের জন্য একটি সুস্পষ্ট কার্সার কেন ব্যবহার করবেন?
- লুপের জন্য একটি সুস্পষ্ট কার্সার ব্যবহার করুন যখন কোয়েরিটি পুনরায় ব্যবহৃত হবে, অন্যথায় একটি অন্তর্নিহিত কার্সার পছন্দ করা হবে।
স্পষ্টভাবে FETCH নেই এমন একটি লুপের পরিবর্তে FETCH দিয়ে একটি লুপ কেন ব্যবহার করবেন?
- যখন আপনাকে প্রচুর পরিমাণে সংগ্রহ করতে হবে বা যখন আপনার ডায়নামিক এসকিউএল প্রয়োজন হবে তখন একটি লুপের মধ্যে একটি FETCH ব্যবহার করুন।
এখানে ডকুমেন্টেশন থেকে কিছু দরকারী তথ্য দেওয়া হয়েছে।
লুপের জন্য অন্তর্ভুক্ত কার্সারের উদাহরণ
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;
/
লুপের জন্য সুস্পষ্ট কার্সারের উদাহরণ
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;
/
অন্তর্নিহিত কার্সার
একটি অন্তর্নিহিত কার্সার হ'ল একটি সেশন কার্সার যা পিএল / এসকিউএল দ্বারা নির্মিত এবং পরিচালিত হয়। পিএল / এসকিউএল প্রতিবার আপনি নির্বাচন বা ডিএমএল বিবৃতি চালানোর সময় একটি অন্তর্নিহিত কার্সার খোলে। আপনি একটি অন্তর্নিহিত কার্সার নিয়ন্ত্রণ করতে পারবেন না, তবে আপনি এর বৈশিষ্ট্যগুলি থেকে তথ্য পেতে পারেন।
এর সাথে সম্পর্কিত বিবৃতি চলার পরে একটি অন্তর্নিহিত কার্সার বন্ধ হয়; তবে, অন্য বৈশিষ্ট্য বা ডিএমএল বিবৃতি চালিত না হওয়া পর্যন্ত এর বৈশিষ্ট্য মানগুলি উপলব্ধ থাকে।
অন্তর্নিহিত কার্সার বৈশিষ্ট্যগুলি হ'ল: এসকিউএল% ইসোপেন, এসকিউএল% ফাউন্ড, এসকিউএল% নোটফাউন্ড, এসকিউএল% রাউকাউন্ট, এসকিউএল% বালক_আরউব্যাক্টস, এসকিউএল% বুলক_এক্সসিপিশনস
সুস্পষ্ট কার্সার
একটি সুস্পষ্ট কার্সার হ'ল একটি সেশন কার্সার যা আপনি তৈরি এবং পরিচালনা করেন। আপনাকে অবশ্যই একটি স্পষ্ট কার্সার ঘোষণা করতে হবে এবং এটি সংজ্ঞায়িত করতে হবে, একটি নাম দেবে এবং এটিকে একটি ক্যোয়ারির সাথে যুক্ত করে (সাধারণত, ক্যোয়ারিতে একাধিক সারি ফেরত দেয়)। তারপরে আপনি কোয়েরির ফলাফলটিকে এই যে কোনও একটিতে সেট করে প্রক্রিয়া করতে পারেন:
সুস্পষ্ট কার্সারটি খুলুন (ওপেন বিবৃতি সহ), ফলাফল সেট থেকে সারিগুলি আনুন (FETCH বিবৃতি সহ), এবং সুস্পষ্ট কার্সারটি বন্ধ করুন (ক্লোজ স্টেটমেন্ট সহ)।
লুপ বিবৃতিটির জন্য একটি কার্সারে সুস্পষ্ট কার্সারটি ব্যবহার করুন ("লুপ বিবৃতিগুলির জন্য কার্সার সহ কোয়েরি ফলাফল সেট প্রক্রিয়াজাতকরণ দেখুন")।
আপনি একটি সুস্পষ্ট কার্সারে একটি মান নির্ধারণ করতে পারবেন না, এটি একটি অভিব্যক্তিতে ব্যবহার করতে পারবেন না বা এটি একটি আনুষ্ঠানিক সাবপ্রগ্রাম পরামিতি বা হোস্ট ভেরিয়েবল হিসাবে ব্যবহার করতে পারবেন। আপনি কার্সার ভেরিয়েবলের সাহায্যে এই জিনিসগুলি করতে পারেন ("কার্সার ভেরিয়েবলগুলি দেখুন")।
একটি অন্তর্নিহিত কার্সারের থেকে পৃথক, আপনি একটি সুস্পষ্ট কার্সার বা কার্সার ভেরিয়েবল এর নাম দ্বারা উল্লেখ করতে পারেন। সুতরাং, একটি সুস্পষ্ট কার্সার বা কার্সার ভেরিয়েবলকে নামযুক্ত কার্সার বলা হয়।
লুপ বিবৃতি জন্য কার্সার
লুপ স্টেটমেন্টের জন্য কার্সার আপনাকে একটি নির্বাচন স্টেটমেন্ট চালাতে দেয় এবং তারপরে অবিলম্বে ফলাফল সেটটির সারিগুলির মধ্য দিয়ে লুপ হয়। এই বিবৃতিটি একটি অন্তর্নিহিত বা সুস্পষ্ট কার্সার ব্যবহার করতে পারে।
FOR
কার্সর ব্যবহারের অন্য উপায় way দস্তাবেজগুলি দেখুন: docs.oracle.com/cd/E11882_01/appdev.112/e10472/… যাইহোক, htp.prn () কী করে?