রিকার্সিভ সিটিইগুলির বিওএল বর্ণনায় রিকার্সিভ এক্সিকিউশন এর শব্দার্থকে বর্ণনা করা হয়েছে:
- সিটিই এক্সপ্রেশনটি অ্যাঙ্কর এবং পুনরাবৃত্ত সদস্যদের মধ্যে বিভক্ত করুন।
- প্রথম আমন্ত্রণ বা বেস ফলাফল সেট (টি 0) তৈরি করে অ্যাঙ্কর সদস্য (গুলি) চালান।
- ইনপুট হিসাবে টিআই এবং আউটপুট হিসাবে টিআই 1 দিয়ে পুনরাবৃত্তকারী সদস্য (গুলি) চালান।
- একটি খালি সেট ফিরে না আসা পর্যন্ত পদক্ষেপ 3 পুনরাবৃত্তি করুন।
- ফলাফল সেট ফিরে। এটি TN থেকে Tn এর সমস্ত ইউনিয়ন।
উল্লেখ্য উপরোক্ত একটি যৌক্তিক বিবরণ। অপারেশনের শারীরিক ক্রম এখানে চিত্রিত হিসাবে কিছুটা আলাদা হতে পারে
আপনার সিটিইতে এটি প্রয়োগ করে আমি নিম্নলিখিত প্যাটার্ন সহ একটি অসীম লুপ আশা করব
+-----------+---------+---+---+---+
| Invocation| Results |
+-----------+---------+---+---+---+
| 1 | 1 | 2 | 3 | |
| 2 | 4 | 5 | | |
| 3 | 1 | 2 | 3 | |
| 4 | 4 | 5 | | |
| 5 | 1 | 2 | 3 | |
+-----------+---------+---+---+---+
কারণ
select a
from cte
where a in (1,2,3)
অ্যাঙ্কর এক্সপ্রেশন। এটা স্পষ্ট ফেরৎ 1,2,3
যেমনT0
এরপরে পুনরাবৃত্তির অভিব্যক্তি চলে
select a
from cte
except
select a
from r
সঙ্গে 1,2,3
ইনপুট যে একটি আউটপুট উত্পাদ হবে 4,5
যেমন T1
তারপর পুনরাবৃত্তির পরের বারে ফিরে আসবে জন্য যে আবার লাগালে 1,2,3
এবং তাই অনির্দিষ্টকালের জন্য।
এটি আসলে যা ঘটে তা নয়। এগুলি প্রথম 5 টি আমন্ত্রণের ফলাফল
+-----------+---------+---+---+---+
| Invocation| Results |
+-----------+---------+---+---+---+
| 1 | 1 | 2 | 3 | |
| 2 | 1 | 2 | 4 | 5 |
| 3 | 1 | 2 | 3 | 4 |
| 4 | 1 | 2 | 3 | 5 |
| 5 | 1 | 2 | 3 | 4 |
+-----------+---------+---+---+---+
OPTION (MAXRECURSION 1)
এর ইনক্রিমেন্টে উপরের দিকে ব্যবহার এবং সামঞ্জস্য করা থেকে 1
দেখা যায় যে এটি এমন একটি চক্রের ভিতরে প্রবেশ করে যেখানে প্রতিটি ধারাবাহিক স্তর ক্রমাগত আউটপুট 1,2,3,4
এবং এর মধ্যে টগল করে 1,2,3,5
।
দ্বারা আলোচনা @Quassnoi মধ্যে এই ব্লগ পোস্টে । পর্যবেক্ষণের ফলাফলগুলির প্যাটার্নটি হ'ল প্রতিটি অনুরোধটি সেখানে কাজ করছে (1),(2),(3),(4),(5) EXCEPT (X)
যেখানে X
আগের অনুরোধের শেষ সারিটি।
সম্পাদনা: এসকিউএল কিউইর চমৎকার উত্তরটি পড়ার পরে এটি উভয়ই পরিষ্কার হয় যে এটি কেন ঘটে এবং এটি পুরো গল্পটি নয় যে স্ট্যাকের মধ্যে এখনও প্রচুর পরিমাণে জিনিসপত্র রয়েছে যা কখনও প্রক্রিয়াজাত হতে পারে না।
অ্যাঙ্কর 1,2,3
ক্লায়েন্ট স্ট্যাক সামগ্রীগুলিতে এমিট করে3,2,1
3 পপ অফ স্ট্যাক, স্ট্যাক সামগ্রী 2,1
এলএএসজে ফিরে আসে 1,2,4,5
, স্ট্যাক সামগ্রী5,4,2,1,2,1
5 পপ অফ স্ট্যাক, স্ট্যাক সামগ্রী 4,2,1,2,1
এলএএসজে 1,2,3,4
স্ট্যাক সামগ্রীগুলি ফেরত দেয়4,3,2,1,5,4,2,1,2,1
4 পপড স্ট্যাক, স্ট্যাক সামগ্রীসমূহ 3,2,1,5,4,2,1,2,1
এলএএসজে 1,2,3,5
স্ট্যাক সামগ্রীগুলি ফেরত দেয়5,3,2,1,3,2,1,5,4,2,1,2,1
5 পপ অফ স্ট্যাক, স্ট্যাক সামগ্রী 3,2,1,3,2,1,5,4,2,1,2,1
এলএএসজে 1,2,3,4
স্ট্যাক সামগ্রীগুলি
ফেরত দেয়4,3,2,1,3,2,1,3,2,1,5,4,2,1,2,1
যদি আপনি পুনরাবৃত্ত সদস্যকে যৌক্তিক সমতুল্য (সদৃশ / NUL এর অনুপস্থিতিতে) এক্সপ্রেশন দিয়ে প্রতিস্থাপন করেন
select a
from (
select a
from cte
where a not in
(select a
from r)
) x
এটি অনুমোদিত নয় এবং ত্রুটিটি উত্থাপন করে "সাবকিউরিতে পুনরাবৃত্ত তথ্যসূত্রগুলি অনুমোদিত নয় allowed" সুতরাং সম্ভবত এটি একটি তদারকি যা EXCEPT
এমনকি এই ক্ষেত্রে অনুমোদিত।
সংযোজন:
মাইক্রোসফ্ট এখন নীচে হিসাবে আমার সংযোগের প্রতিক্রিয়ায় প্রতিক্রিয়া জানিয়েছে
জ্যাকের অনুমান সঠিক: এটি একটি সিনট্যাক্স ত্রুটি হওয়া উচিত ছিল; EXCEPT
ধারাগুলিতে পুনরাবৃত্ত তথ্যসূত্রের প্রকৃতপক্ষে অনুমতি দেওয়া উচিত নয় । আমরা আসন্ন পরিষেবা রিলিজে এই বাগটি সমাধান করার পরিকল্পনা করছি। এর মধ্যে, আমি EXCEPT
ধারাগুলিতে পুনরাবৃত্ত তথ্যগুলি এড়াতে পরামর্শ দেব ।
পুনরাবৃত্তি সীমাবদ্ধ করার ক্ষেত্রে EXCEPT
আমরা এএনএসআই এসকিউএল স্ট্যান্ডার্ড অনুসরণ করি, যা পুনরাবৃত্তি চালু হওয়ার পরে থেকেই এই বিধিনিষেধকে অন্তর্ভুক্ত করেছে (১৯৯৯ সালে আমি বিশ্বাস করি)। EXCEPT
এসকিউএল-এর মতো ঘোষিত ভাষাগুলিতে পুনরাবৃত্তির জন্য অর্থশাস্ত্রগুলি কী হওয়া উচিত (এটিকে "অস্ট্রাস্টাইয়েড নেগ্রেশন" নামেও ডাকা হয়) সে সম্পর্কে কোনও বৃহত্তর চুক্তি নেই । তদতিরিক্ত, একটি আরডিবিএমএস সিস্টেমে এ জাতীয় শব্দার্থবিজ্ঞান দক্ষতার সাথে (যুক্তিযুক্ত আকারের ডেটাবেসগুলির জন্য) কার্যকরভাবে প্রয়োগ করা কুখ্যাতভাবে কঠোর (যদি অসম্ভব না হয়) is
এবং দেখে মনে হচ্ছে যে চূড়ান্ত বাস্তবায়নটি ২০১৪ সালে 120 বা ততোধিকের উচ্চতার সামঞ্জস্যতার স্তরের ডেটাবেজের জন্য করা হয়েছিল ।
একটি এক্সেসপটি ধারাটিতে পুনরাবৃত্ত তথ্যসূত্রগুলি এএনএসআই এসকিউএল স্ট্যান্ডার্ডের সাথে সম্মতিতে ত্রুটি উত্পন্ন করে।