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

Lỗi biên dịch trình kích hoạt SQL PLUS

Nó không phải là trình kích hoạt, mà là kiểu dữ liệu. Nếu bạn rút ngắn một ngày từ một ngày khác, kết quả là một khoảng thời gian, không phải ngày khác:

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

Vì vậy, nếu trình kích hoạt lưu trữ khoảng thời gian trong một số, nó sẽ biên dịch:

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

và nếu nó lưu trữ khoảng thời gian trong một ngày, nó không:

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. Tạo chuỗi ngẫu nhiên chữ hoa và chữ thường trong Oracle

  2. Tối ưu hóa truy vấn Oracle

  3. Điền mục cây với nhóm bản ghi trong các biểu mẫu Oracle

  4. ORA-4031 lỗi với Direct NFS

  5. Cập nhật Salesforce từ Oracle®