Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

PLS-00201:mã định danh 'R_CUR' phải được khai báo trong sql động

Lỗi là hợp lệ ở đây. Nếu bạn nhìn vào execute immediate , khi nó được giải quyết và được thực thi, nó bắt đầu bằng begin khối. Trong đó bắt đầu khối khai báo r_cur nằm ngoài phạm vi và do đó bạn gặp sự cố. Bạn cần tạo r_cur khai báo trong bạn bắt đầu khối là tốt. Xem phần đã nhận xét của tôi.

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. ORA-01036:tên / số biến không hợp lệ khi chạy truy vấn thông qua C #

  2. java.sql.SQLException:I / O Error:Thiết lập lại kết nối trong máy chủ linux

  3. Oracle XMLTYPE trích xuất giá trị prolog gốc

  4. Làm cách nào để chỉ đếm các giá trị NULL trong Oracle / PLSQL?

  5. Làm thế nào để chạy một thủ tục được lưu trữ trong oracle sql developer?