Я пытаюсь проверить мой триггер, если вставленная запись находится в таблице TUTPRAC
содержит и CLASSTIME < '9AM' OR > '6PM'
. Если это так, то эта запись обновляется с изменением определенных полей на NULL
.Как проверить, больше или меньше времени в PLSQL,
CREATE TRIGGER CheckBeforeAfterHours
BEFORE INSERT OR UPDATE OF CLASS_TIME ON TUTPRAC
FOR EACH ROW
BEGIN
IF (:NEW.CLASS_TIME < '09:00' OR > '18:00') THEN
:NEW.STAFFNO := NULL;
:NEW.CLASS_DAY := NULL;
:NEW.CLASS_TYPE := NULL;
:NEW.ROOMNUM := NULL;
END IF;
END CheckBeforeAfterHours;
Колонна TUTPRAC
таблицы:
CLASSID (PK), UNITCODE, STAFFNO, CLASSDAY, CLASSTIME, CLASSTYPE, ROOMNUM
В поле CLASSTIME
установлена в varchar(5)
.
Я использую Oracle SQLDeveloper
.
ПРОБЛЕМА
мой вопрос заключается в том, что я постоянно получаю эту ошибку, когда я пытаюсь запустить триггер:
Error(2,36):
PLS-00103: Encountered the symbol ">" when expecting one of the following:
(- + case mod new not null <an identifier> <a double-quoted delimited-identifier>
<a bind variable> continue avg count current exists max min prior sql stddev
sum variance execute forall merge time timestamp interval
date <a string literal with character set specification>
<a number> <a single-quoted SQL string> pipe
<an alternatively-quoted string literal with character set specification>
<an alternatively
Это зависит от фиксированного формата, чтобы убедиться, что преобразование ascii дает правильный результат. –