मुझे लगता है कि समस्या यह है कि आप अपने EXECUTE IMMEDIATE में जिस डायनामिक स्टेटमेंट का प्रयास कर रहे हैं, वह है एक एसक्यूएल स्टेटमेंट है, पीएल/एसक्यूएल स्टेटमेंट नहीं। और INTO एसक्यूएल नहीं है, यह पीएल/एसक्यूएल है।
आप या तो एक गतिशील SQL कर सकते हैं सिर्फ एक बाइंड वैरिएबल के साथ स्टेटमेंट और फिर अपना INTO . रखें गतिशील कथन के बाहर। डायनेमिक SQL . करते समय यह समर्थित है कथन:
execute immediate 'select CASE WHEN EXISTS ( SELECT 1 from samples where samplecode = :varSamplecode and auditflag = 0 and ' || varFilterString || ') then 1 else 0 end from DUAL'
into varResult
using IN varSampleCode;
या आप एक गतिशील PL/SQL कर सकते हैं अनाम ब्लॉक:
execute immediate 'begin select CASE WHEN EXISTS ( SELECT 1 from samples where samplecode = :varSamplecode and auditflag = 0 and ' || varFilterString || ') then 1 else 0 end into :varresult from DUAL; end;'
using IN varSampleCode, OUT varResult;
इस बार INTO डायनामिक स्ट्रिंग के अंदर होना चाहिए और बाइंड वैरिएबल का उपयोग करना चाहिए, क्योंकि BEGIN . के साथ और END; अब आप डायनामिक PL/SQL कर रहे हैं ।
आपके उपयोग के मामले के लिए मैं पहले विकल्प की अनुशंसा करता हूं, गतिशील SQL और INTO . डालकर बाद स्टेटमेंट स्ट्रिंग।