ORACLE PL/SQL编程触发问题

ORACLE PL/SQL编程触发问题,oracle,plsql,Oracle,Plsql,我试图找出一个简单的ORACLE PL/SQL编程问题,但遇到了一些困难 我必须创建一个触发器来捕获表中的插入,如果进入该表的新元组的location属性在数据库中不存在,我需要抛出一条警告消息并将该新位置插入另一个表中 到目前为止,我所拥有的- CREATE TRIGGER sightTrigger AFTER INSERT ON SIGHTINGS FOR EACH ROW DECLARE ct INTEGER; BEGIN SELECT COUNT(*)

我试图找出一个简单的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;
创建触发器瞄准具
在目击事件后插入
每行
声明
ct整数;
开始
选择计数(*)
进入ct
从目击中
地点:新地点;
如果ct>0,则
引发|应用程序|错误('警告符号'| |:NEW.location | |'在数据库中不存在');
插入要素(位置、类别、纬度等)
值(:NEW.LOCATION,'未知',…);
如果结束;
结束;
我收到一个错误,“PLS-00306:调用'RAISE_APP_error'时参数类型的数目错误。有人能告诉我怎么了吗?谢谢你试试这个:

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

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

您的RAISE_应用程序错误包含两个参数(来自Oracle文档):其中错误号是-20000..-20999范围内的负整数,消息是最长2048字节的字符串。

您的RAISE_应用程序错误包含两个参数(来自Oracle文档):其中error_number是-20000..-20999范围内的负整数,message是长度不超过2048字节的字符串。

让我介绍你认识一位亲密的个人朋友:。它在线、全面且免费。让我介绍你认识一位亲密的个人朋友:。它在线、全面且免费。