sql >> Databáze >  >> RDS >> Oracle

PLS-00201:Identifikátor 'R_CUR' musí být deklarován v dynamickém SQL

Chyba je platná zde. Pokud se podíváte na execute immediate příkaz, když je vyřešen a spuštěn, začíná begin blok. V tomto počátečním bloku deklarace r_cur je mimo rozsah, a proto máte problém. Potřebujete vytvořit r_cur deklarace v počátečním bloku. Viz moje komentovaná část.

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. Je možné vydat VACUUM ANALYZE <tablename> z psycopg2 nebo sqlalchemy pro PostgreSQL?

  2. Různé výsledky v sqlfiddle.com 5.5.30 a MariaDB 5.5.31

  3. Parametr připojení TCP Keep-Alive PDO

  4. postgresql kombinující několik období do jednoho