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

ORA-06531 setelah peningkatan Oracle

Kesalahan ini:

ORA-06531: Reference to uninitialized collection

berarti Anda memiliki koleksi yang tidak diinisialisasi sebelum Anda menggunakannya, misalnya:

SQL> select banner from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> ed
Wrote file afiedt.buf

  1  CREATE OR REPLACE TYPE t_employee AS OBJECT(
  2    id  number,
  3    name VARCHAR2(300),
  4    CONSTRUCTOR FUNCTION t_employee RETURN SELF AS RESULT
  5* )
SQL> /

Type created.

SQL> ed
Wrote file afiedt.buf

  1* CREATE OR REPLACE TYPE t_employees AS TABLE OF t_employee
SQL> /

Type created.

SQL> ed
Wrote file afiedt.buf

  1  DECLARE
  2    l_emp t_employee;
  3    l_emps t_employees;
  4  BEGIN
  5    for i in (SELECT employee_id, first_name
  6                FROM employees)
  7    loop
  8      l_emp := t_employee(i.employee_id, i.first_name);
  9      l_emps.extend();
 10      l_emps(l_emps.COUNT) := l_emp;
 11    end loop;
 12    DBMS_OUTPUT.put_line(l_emps(4).name);
 13* END;
SQL> /
DECLARE
*
ERROR at line 1:
ORA-06531: Reference to uninitialized collection
ORA-06512: at line 9

Seperti yang Anda lihat, saya memiliki ORA-06531 kesalahan, itu karena saya belum menginisialisasi l_emps variabel, saya harus menambahkan l_emps := t_employees(); :

SQL> ed
Wrote file afiedt.buf

  1  DECLARE
  2    l_emp t_employee;
  3    l_emps t_employees;
  4  BEGIN
  5    l_emps := t_employees();
  6    for i in (SELECT employee_id, first_name
  7                FROM employees)
  8    loop
  9      l_emp := t_employee(i.employee_id, i.first_name);
 10      l_emps.extend();
 11      l_emps(l_emps.COUNT) := l_emp;
 12    end loop;
 13    DBMS_OUTPUT.put_line(l_emps(4).name);
 14* END;
SQL> /
David

PL/SQL procedure successfully completed.

Jadi lihatlah sumber dari semua prosedur PL/SQL ini, masalahnya ada di dalamnya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle INSERT INTO SELECT(...) Perilaku pengecualian DUP_VAL_ON_INDEX

  2. membandingkan dua kursor di Oracle alih-alih menggunakan MINUS

  3. Apa cara terbaik untuk mencari tipe data Panjang dalam database Oracle?

  4. Buat tabel nama dinamis dengan Pernyataan yang Disiapkan di java

  5. Oracle PL/SQL versi fungsi INET6_ATON dan NTOA?