ORA-14552: cannot perform a DDL, commit or rollback inside a query or DML

Saat membuat function, kadang ada beberapa error yang akan terjadi salah satunya error ORA-14552: cannot perform a DDL, commit or rollback inside a query or DML, di tutorial kali ini cara akan bahas cara mengatasi error tersebut.

Saat menjalankan function ada dua error yang terjadi yang pertama error ORA-14552: cannot perform a DDL, commit or rollback inside a query or DML dan kedua ORA-06519: active autonomous transaction detected and rolled back

Solusinya kita menambahkan script PRAGMA AUTONOMOUS_TRANSACTION;

Code berikut adalah function awal sebelum di tambah PRAGMA AUTONOMOUS_TRANSACTION;

 

CREATE OR REPLACE FUNCTION FUNC_DATA (DATA1    VARCHAR2,
                                      DATA2     VARCHAR2)
   RETURN VARCHAR2
IS
BEGIN
  

EXCEPTION
   WHEN OTHERS
   THEN
      ROLLBACK;
      RAISE;
END;

Setelah di tambah menjadi

CREATE OR REPLACE FUNCTION FUNC_DATA (DATA1 VARCHAR2, 
                                      DATA2 VARCHAR2) 
      RETURN VARCHAR2 
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
      

EXCEPTION 
      WHEN OTHERS 
      THEN 
        ROLLBACK; 
        RAISE;
END;

Jika setelah di tambah masih terjadi error dan errornya cannot perform a DDL, commit or rollback inside a query or DML, pastikan anda sudah menambahkan rollback ketika gagal dan commit ketika data berhasil di simpan ataupun di update.

Sekian tutorial kali ini, semoga bermanfaat

 

Pos terkait

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.