【发布时间】:2017-04-26 14:13:07
【问题描述】:
我正在尝试创建一个触发器,该触发器允许输入大小为 small-large 的衣服,但触发器会根据插入内容将大小更改为 S M 或 L。
我的 if 语句出现错误的绑定变量错误,我不知道为什么,因为它与我的 Products 表中的列名相同。
产品表:
CREATE TABLE "user"."PRODUCTS"
( "PID" NUMBER(6,0),
"PRODUCT_NAME" VARCHAR2(255 BYTE),
"QUANTITY" NUMBER,
"PRODUCT_SIZE" VARCHAR2(255 BYTE),
"PRODUCT_VALUE" NUMBER,
PRIMARY KEY ("PID")
尺寸触发:
create or replace TRIGGER sizeTrigger
BEFORE INSERT OR UPDATE
ON PRODUCTS
BEGIN
--smalls--
IF :NEW.product_size = 's' THEN
::NEW.PRODUCT_SIZE := 'S';
elsif ::NEW.PRODUCT_SIZE = 'S' THEN
::NEW.product_size := 'S';
elsif ::NEW.PRODUCT_SIZE = 'small'THEN
::NEW.product_size := 'S';
elsif ::NEW.PRODUCT_SIZE = 'SMALL' THEN
::NEW.product_size := 'S';
--MEDIUM--
elsif ::NEW.PRODUCT_SIZE = 'm' THEN
::NEW.product_size := 'M';
elsif ::NEW.PRODUCT_SIZE = 'm' THEN
::NEW.product_size := 'M';
elsif ::NEW.PRODUCT_SIZE = 'medium' THEN
::NEW.product_size := 'M';
elsif ::NEW.PRODUCT_SIZE = 'MEDIUM' THEN
::NEW.product_size := 'M';
--large
elsif ::NEW.PRODUCT_SIZE = 'l' THEN
::NEW.product_size := 'L';
elsif ::NEW.PRODUCT_SIZE = 'L' THEN
::NEW.product_size := 'L';
elsif ::NEW.PRODUCT_SIZE = 'large' THEN
::NEW.product_size := 'L';
elsif ::NEW.PRODUCT_SIZE = 'LARGE' THEN
::NEW.product_size := 'L';
else
raise exception_error;
END IF;
EXCEPTION
WHEN exception_error THEN
DBMS_OUTPUT.PUT_LINE('Size must be "s,m,l,small, medium, large");
END;
【问题讨论】:
-
去掉所有列定义周围的双引号。