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

Kesalahan kompilasi Pemicu SQL PLUS

Bukan pemicunya, ini tipe datanya. Jika Anda mengurangi tanggal dari tanggal lain, hasilnya adalah interval, bukan tanggal lain:

CREATE TABLE dates (date1 DATE, date2 DATE, datediff DATE, numdiff NUMBER);
INSERT INTO dates (date1, date2) VALUES (sysdate, sysdate-1);

UPDATE dates SET numdiff = date1 - date2;
1 rows updated

UPDATE dates SET datediff = date1 - date2;
SQL Error: ORA-00932: inconsistent datatypes: expected DATE got DATE JULIAN

Jadi, jika pemicu menyimpan interval dalam sebuah angka, pemicu akan mengkompilasi:

CREATE OR REPLACE TRIGGER newtriggernum
  BEFORE INSERT ON dates FOR EACH ROW
BEGIN
  :new.numdiff := :new.date1 - :new.date2;
END;
/
TRIGGER NEWTRIGGERNUM compiled

dan jika itu menyimpan interval dalam tanggal, itu tidak:

CREATE OR REPLACE TRIGGER newtriggerdate
  BEFORE INSERT ON dates FOR EACH ROW
BEGIN
  :new.datediff := :new.date1 - :new.date2;
END;
/
Error(2,11): PL/SQL: ORA-00922: missing or invalid option


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan basis data Oracle di symfony2 (doktrin). Apakah pengaturan parameter.yml dengan benar?

  2. Pertanyaan pemula SQL oracle

  3. Bagaimana saya perlu mengubah sql saya untuk mendapatkan apa yang saya inginkan dalam kasus ini?

  4. Menggunakan Dapper QueryMultiple di Oracle

  5. kesalahan sintaks saat mendeklarasikan variabel dalam prosedur pl/sql