sql >> Databasteknik >  >> RDS >> Oracle

PLS-00201:identifierare 'R_CUR' måste deklareras i dynamisk sql

Felet är giltigt här. Om du tittar på execute immediate sats, när den är löst och körs, börjar den med en begin blockera. I den början blockera deklarationen av r_cur är utanför räckvidden och därför får du problemet. Du måste skapa r_cur deklaration i startblocket också. Se min kommenterade 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. hur man skapar trigger för att göra sammanlänkning av fält

  2. Infinite Scroll med MySQL Data

  3. En tabell, två kolumner MYSQL frågeutmaning

  4. Hur lägger jag till index i MySQL-tabeller?