ORACLE PL / SQL编程触发问题

时间:2016-04-22 07:04:00

标签: oracle plsql

我试图找出一个简单的ORACLE PL / SQL编程问题,并且我遇到了一些困难。

我必须创建一个触发器来捕获插入到表中,并且如果进入该表的新元组的location属性在数据库中不存在,我需要抛出一条警告消息并插入新的位置到另一个表。

到目前为止我所拥有的 -

CREATE TRIGGER sightTrigger
    AFTER INSERT ON SIGHTINGS
    FOR EACH ROW
DECLARE 
    ct INTEGER;
BEGIN
    SELECT COUNT(*)
    INTO ct
    FROM SIGHTINGS
    WHERE SIGHTINGS.location <> :NEW.location;
    IF ct > 0 THEN
        RAISE_APPLICATION_ERROR('WARNING SIGN' || :NEW.location ||' does not exist in the database');
        INSERT INTO FEATURES(LOCATION, CLASS, LATITUDE, ...)
        VALUES (:NEW.LOCATION, 'UNKNOWN', ...);
    END IF;
END;

我收到错误,&#34; PLS-00306:调用&#39; RAISE_APP_ERROR&#39;错误的参数类型数量。有人可以告诉我出了什么问题吗?谢谢

2 个答案:

答案 0 :(得分:1)

试试这个:

RAISE_APPLICATION_ERROR(
       -20001, 
       'WARNING SIGN' || :NEW.location || 'does not     exist in the database'
);

答案 1 :(得分:1)

您的RAISE_APPLICATION_ERROR有两个参数(来自Oracle文档):其中error_number是-20000 .. -20999范围内的负整数,message是最长2048字节的字符串。