एक शुरुआत के रूप में इस तरह के सिंटैक्स मुद्दे से निपटने के तरीके के बारे में, मेरा सुझाव है कि आप इसे सबसे छोटे संभव उदाहरण तक सरल बनाने का अभ्यास करें, ताकि आप शामिल होने के तर्क से विचलित न हों।
उदाहरण के लिए, आप जल्दी से इसका परीक्षण कर सकते हैं और देख सकते हैं कि यह काम नहीं करेगा :
declare
rc sys_refcursor;
begin
open rc for
case
when 1 = 1 then select * from dual -- not valid
end;
end;
जो विफल हो जाता है
ORA-06550: line 6, column 29:
PLS-00103: Encountered the symbol "SELECT" when expecting one of the following: ...
क्योंकि open rc for select
सिंटैक्स को एक ही कथन होना चाहिए और इसे सशर्त तर्क के साथ विभाजित नहीं किया जा सकता है।
ध्यान दें कि कैसे कोई create function
नहीं है , पैरामीटर या जॉइन आदि चीजों को जटिल बनाने के लिए। सिंटैक्स को सीधा करने के बाद आप उन सभी को वापस जोड़ सकते हैं। case
स्टेटमेंट सिंटैक्स यहां
. (ध्यान दें कि case
. के दो अलग-अलग प्रकार हैं ।) इसे या तो होना चाहिए
declare
rc sys_refcursor;
begin
case
when 1 = 1 then
open rc for select * from dual;
end case;
end;
या समकक्ष if
. का उपयोग करके :
declare
rc sys_refcursor;
begin
if 1 = 1 then
open rc for select * from dual;
end if;
end;