Oracle自构造函数与if语句一起使用

时间:2017-04-12 17:21:47

标签: oracle plsql

我的问题是因为我是oracle和pl / sql的新手,可以使用自构造函数检查插入过程中的值。 示例根据另一个属性值检查varray项的数量?

Create or Replace Type test_arr as Varray(20) of number;

Create or Replace Type test_typ as Object(
tID number(5),
tType varchar2(1),
tArray test_arr
);

我想测试tType ='A'时tArray.count应该小于2,如果tType ='B',则tArray.count应该在5到20之间。 我想在插入过程中测试这个:

Create Table test_tbl of test_typ;
Insert Into test_tbl Values(187,'A',test_arr(1,6,7)); /*This should give an error and not insert the record as the tType is 'A' and the tArray has 3 values!*/

我不确定我是否能以自我回报的方式做到这一点。这里的主要内容是我需要在插入过程中进行检查!

我会提供任何帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

这可以使用触发器

完成
create trigger instrg BEFORE INSERT ON test_tbl
FOR EACH ROW
BEGIN
    IF  :NEW.tType = 'A' AND :NEW.tArray.COUNT >= 2 then  
       RAISE_APPLICATION_ERROR(-20001, 'error 1');
    ELSIF  :NEW.tType = 'B' AND  :NEW.tArray.COUNT NOT BETWEEN 5 AND 20 then
        RAISE_APPLICATION_ERROR(-20001, 'error 2');
    END IF;
END;

查看if else条件,我认为您可以轻松了解其中的条件,如果需要,您也可以修改它们。