sql >> Database >  >> RDS >> Oracle

PLS-00201:identifier 'R_CUR' moet worden gedeclareerd in dynamische sql

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);



  1. Kolomnaam doorgeven als parameter in opgeslagen mysql-functie

  2. Hoe MySQL-query's te optimaliseren op basis van het EXPLAIN-plan?

  3. het aantal weekdagen tussen 2 datums willen tellen

  4. Een ContentDocument aan een aangepast Salesforce-object toevoegen