কেউ কীভাবে কখন এবং কখন সিস_ফ্রেচার ব্যবহার করতে হবে সে সম্পর্কে কেউ আমাকে একটি ছোট্ট ব্যাখ্যা দিতে পারেন?
কেউ কীভাবে কখন এবং কখন সিস_ফ্রেচার ব্যবহার করতে হবে সে সম্পর্কে কেউ আমাকে একটি ছোট্ট ব্যাখ্যা দিতে পারেন?
উত্তর:
একটি কার্সার একটি কোয়েরির জন্য ফলাফল সেটের পয়েন্টার। কোনও ফিরিয়ে sys_refcursor
দেওয়ার মাধ্যমে আপনি ক্লায়েন্টকে প্রয়োজনীয় হিসাবে ক্যোয়ারী থেকে অনেকগুলি বা কয়েকটি সারি আনার অনুমতি দেন। রাষ্ট্রীয় অ্যাপ্লিকেশনগুলিতে এটি ফলাফলের মাধ্যমে পৃষ্ঠাতে ব্যবহৃত হতে পারে।
একটি কার্সার পিএল / এসকিউএল ফাংশন লেখার চেয়ে আরও নমনীয়তার অনুমতি দিতে পারে যা ক্লায়েন্টের উপর নির্ভর করে যে কত সারি আনবে এবং কখন থামবে to এটি বলেছিল, আমি অতিরিক্ত কিছু নমনীয়তা খুঁজে পাই নি যেখানে এই অতিরিক্ত নমনীয়তা কার্যকর।
এটি লক্ষণীয় যে sys_refcursor
এটিকে দুর্বলভাবে টাইপ করা হয়েছে, সুতরাং আপনি এমন পয়েন্টারগুলিকে ক্যোয়ারিতে ফিরে আসতে পারেন যা না শুধুমাত্র ক্লজ বা কোথার চেয়ে আলাদা, তবে বিভিন্ন সংখ্যা এবং কলামের প্রকারগুলিও রয়েছে। বিকল্পভাবে আপনি দৃ strongly়ভাবে টাইপ করা কার্সার ব্যবহার করতে পারেন যেখানে ফলাফল সেটে কলামগুলি স্থির করা আছে।
এটি আপনাকে এমন ফাংশনগুলি লিখতে সক্ষম করে যা বিভিন্ন প্রশ্নের উত্তর দেয়, যেমন:
create function get_data ( type varchar2 ) return sys_refcursor as
ret_cur sys_refcursor;
begin
if type = 'EMP' then
open ret_cur for select * from emp;
elsif type = 'DEPT' then
open ret_cur for select * from dept;
end if;
return ret_cur;
end;
তবে, যদি আপনি sys_refcursor
উপরের মত জেনেরিক "ওপেন ক্যোয়ারী" ফাংশন তৈরি করতে ব্যবহার করছেন আপনি সম্ভবত কিছু ভুল করছেন!
get_emps
এবং get_depts
ফাংশন করা ভাল
সম্ভাবনার উদাহরণ হিসাবে: এটি পিছনে pl / sql, যেহেতু কেউ একটি সারি উপস্থাপনের জন্য একটি বস্তুকে সংজ্ঞায়িত করতে পারে, সেই বস্তুর pl / sQL টেবিলটি সংজ্ঞায়িত করতে পারে,
create type T_MY_TABLE as table of t_my_object;
এবং সাথে শেষ
OPEN p_recordset FOR select * from table( v_my_table );
সুতরাং একটি ডেটাবেস টেবিলের উপর প্রায়শই ঘন এবং / অথবা ক্রিপ্টিক সরাসরি অনুসন্ধানগুলি তৈরির পরিবর্তে, কোনও একটি অভ্যন্তরীণ সারণী তৈরি করতে পারে এবং এটি জনসাধারণের জন্য pl / sQL এর পুরো ক্ষমতা রাখে। এবং ক্লায়েন্ট ফলাফল-সেট সংগ্রহ করা বুদ্ধিমান কেউ নয়। এবং কোনও অভ্যন্তরীণ সারণির সংজ্ঞা পরিবর্তন করা কোনও ডেটাবেস টেবিল পরিবর্তনের চেয়ে কোনও ব্যবস্থাপনা পও থেকে সহজ।
এছাড়াও জ্যাস্পারের মতো প্রতিবেদন জেনারেটরগুলি ব্যবহার করার সময়, আপনি এসকিউএলটিকে রিপোর্টের বাইরে এবং ডাটাবেসের মধ্যে ঠেলে দিতে পারেন, এবং কেবল রেকর্ডসেটটি অর্জনের পদ্ধতিটি কল করতে পারেন, প্রতিবেদনের পাশে ফর্ম্যাটিংয়ের দিকে মনোনিবেশ করার জন্য।