Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

PLS-00201:pengenal 'R_CUR' harus dideklarasikan dalam sql dinamis

Kesalahan ini valid di sini. Jika Anda melihat execute immediate pernyataan, ketika diselesaikan dan dieksekusi, itu dimulai dengan begin memblokir. Di situ mulai blok deklarasi r_cur berada di luar ruang lingkup dan karenanya Anda mendapatkan masalah. Anda perlu membuat r_cur deklarasi di Anda memulai blok juga. Lihat bagian komentar saya.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buat pemicu yang memperbarui kolom di satu tabel saat kolom di tabel lain diperbarui

  2. Bagaimana mengubah Prioritas untuk Program Serentak

  3. Pembaruan Oracle Hang

  4. apa itu oracle EBS R12

  5. Oracle STANDARD_HASH tidak tersedia di PLSQL?