sql >> Databáze >  >> RDS >> Oracle

Chyby kompilace spouštěče SQL PLUS

Nejde o spouštěč, ale o datový typ. Pokud odečtete datum od jiného data, výsledkem je interval, nikoli další datum:

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

Pokud tedy spouštěč uloží interval do čísla, zkompiluje:

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

a pokud uloží interval do data, neuloží:

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. Balíček:cx_Oracle pro Python 3.5, windows64 bit. Oracle 11.2.0.1.0

  2. Jak importovat a exportovat databázi přes phpMyAdmin (chyba 'Přístup odepřen vytvořit databázi db_name')

  3. Přístup k databázi Java MySQL odepřen

  4. Výběr formátů data pro agregované výpočty z databáze s Django