De fout is hier geldig. Als je kijkt naar de execute immediate
statement, wanneer het is opgelost en wordt uitgevoerd, begint het met een begin
blok. In dat beginblok de declaratie van r_cur
valt buiten het bereik en daarom krijg je het probleem. Je moet de r_cur
. maken aangifte in je startblok ook. Zie mijn becommentarieerde gedeelte.
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);