Oracle
 sql >> база данни >  >> RDS >> Oracle

Грешки при компилиране на SQL PLUS

Това не е тригерът, а типът данни. Ако извадите дата от друга дата, резултатът е интервал, а не друга дата:

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

Така че, ако тригерът съхранява интервала в число, той компилира:

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

и ако съхранява интервала в дата, не:

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. Максималната дължина на VARCHAR е 4000, но може да се съхранява само 2666 байта дълъг тайландски текст

  2. Нуждаете се от Oracle SQL, за да разделите диапазона от дата/час по ден

  3. Референтен SQL за дете + родител

  4. Oracle RAC VIP и ARP Primer

  5. Как да промените nls_date_format по подразбиране за oracle jdbc клиент