【发布时间】:2018-10-17 15:35:03
【问题描述】:
我目前正在尝试找出有关我的作业的问题。我以前从未使用过数组,但我做过集合、触发器、函数、过程和游标。我不是在寻求答案,而是在寻求一些帮助,因为我对如何处理它感到困惑。
声明一条记录 LOCATIONS 表(LOCATION_ID, STREET_ADDRESS、POSTAL_CODE、CITY、STATE_PROVINCE 和 COUNTRY_ID) 和一个操作。
声明一个数组,将位置记录保存为元素。
- 通过填充您想要的每个位置的值来初始化数组 处理
- 操作类型可以是“U”表示更新,“I”表示插入,“D”表示删除
- 从头到尾遍历所有数组元素并执行以下
数组中定义的每个位置的逻辑:
- 如果操作类型为“U”,则使用值更新 LOCATIONS 表 来自阵列。如果在表上找不到位置 ID,则插入它 作为新记录。
- 如果操作类型为“I”,则将记录插入表中。价值观应该 来自数组
- 如果操作类型为“D”,则从表中删除该位置。
- 对于每个操作,在处理完成后显示一条消息
- 如果运算符类型不同于 U、I、D,则显示正确的 指示“无效操作”的消息。
- 提交所有事务
关于操作的部分也让我感到困惑,因为我做了一些工作,您可以在触发器中使用操作符但它不涉及数组:
BEGIN
IF INSERTING THEN
INSERT INTO carlog
VALUES ('INSERT',user, SYSDATE, UPPER(:NEW.serial), UPPER(:NEW.make),
UPPER(:NEW.model), UPPER(:NEW.color));
END IF;
IF UPDATING THEN
INSERT INTO carlog
VALUES ('UPDATE',user, SYSDATE,:old.serial, old.make,
old.model, old.color);
END IF;
IF DELETING THEN
INSERT INTO carlog
VALUES ('DELETE',user, SYSDATE,:old.serial, old.make,
old.model, old.color);
END IF;
END;
【问题讨论】:
-
发布您的完整代码,说明您是如何进行的以及您无法理解如何进行的地方。
标签: arrays plsql oracle12c record