त्रुटि यहाँ मान्य है। यदि आप execute immediate
. को देखते हैं कथन, जब इसका समाधान हो जाता है और निष्पादित हो जाता है, तो यह begin
. से प्रारंभ होता है खंड मैथा। उस शुरुआत में r_cur
. की घोषणा को ब्लॉक करें दायरे से बाहर है और इसलिए आपको समस्या मिलती है। आपको r_cur
बनाना होगा आप में घोषणा ब्लॉक भी शुरू होती है। मेरा टिप्पणी वाला हिस्सा देखें।
FOR j IN r.FIRST .. r.LAST
LOOP
v_if_statement :=
'IF r_cur('||i||').'
|| r (j)
|| ' '
|| 'IS NOT NULL'
|| ' '
|| 'THEN :var:=''true'';'
|| ' '
|| 'dbms_output.put_line(''inside stmt'');'
|| 'END IF;';
----**Here when the begin block gets resolved the r_cur decalration is needed.**
v_sql_statement := 'BEGIN ' || v_if_statement || ' END;';
EXECUTE IMMEDIATE v_sql_statement USING OUT var;
DBMS_OUTPUT.put_line ('var : ' || var);