sql >> Database teknologi >  >> RDS >> Oracle

PLS-00201:identifikator 'R_CUR' skal erklæres i dynamisk sql

Fejlen er gyldig her. Hvis du ser på execute immediate sætning, når den er løst og bliver udført, starter den med en begin blok. I den begyndelse blokerer erklæringen r_cur er uden for rækkevidde, og derfor får du problemet. Du skal lave r_cur erklæring i din begyndelsesblok også. Se min kommenterede del.

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. sløjfe gennem datatabel for at få to specifikke værdier fra hver række

  2. PDO forbindelsesfejl ved brug af symfony og MAMP

  3. Hvorfor får jeg en syntaksfejl, når jeg bruger CAST i MySQL?

  4. Sådan får du data fra de sidste 7 dage fra den nuværende dato og klokkeslæt til de sidste 7 dage i sql-serveren