PLS-00215 Ограничения на длину строки должны быть в диапазоне - PullRequest
0 голосов
/ 09 января 2020
CREATE TABLE INTERVENCIONES(
"IDINTERVENCION" INTEGER PRIMARY KEY,
"NOMBREINTERVENCION" VARCHAR2(50 BYTE) NOT NULL,
"TIEMPOESPERADO" VARCHAR2(50 BYTE),
"NIF" CHAR(9 BYTE) REFERENCES VETERINARIOS NOT NULL,
"NUMEROCLIENTE" INTEGER REFERENCES CLIENTES NOT NULL,
"DIFICULTAD" CHAR (8 BYTE), CONSTRAINT "INTERVENCIONES_1" 
         CHECK (DIFICULTAD IN ('BAJA','MODERADA','ALTA','OTRO'))
);

CREATE OR REPLACE TRIGGER TRG_INTERVENCIONES BEFORE INSERT OR UPDATE ON INTERVENCIONES
FOR EACH ROW
DECLARE
LV_DIF VARCHAR2 := :NEW.DIFICULTAD;
LV_TIM NUMBER := :NEW.TIEMPOESPERADO;
BEGIN

    IF (LV_DIF LIKE 'BAJA' AND (LV_TIM>1)) THEN
      RAISE_APPLICATION_ERROR (num => 20005, msg => 'Siendo de riesgo bajo, debe durar menos de 1 hora');
   END IF;
END;

Я хочу, чтобы, если DIFICULTAD равно BAJA, TIEMPOESPERADO должно быть больше 1. Ошибка:

PLS-00215 Ограничения длины строки должны быть в диапазон

1 Ответ

0 голосов
/ 09 января 2020

вам на самом деле не нужно определять локальные переменные.

IF (:NEW.DIFICULTAD LIKE 'BAJA' AND (:NEW.TIEMPOESPERADO > 1)) THEN

, но если вы хотите определить, вы должны сделать это правильно. varchar должен быть определен с указанием длины: VARCHAR2(<length>)

обратите внимание на информацию о длине. Может быть количеством символов или байтов. это зависит от конфигурации вашей базы данных

например

LV_DIF VARCHAR2(200) := :NEW.DIFICULTAD; -- 200 
...