2

我正在尝试使用 Oracle PL/SQL 创建一个函数,将当前日期存储到一个变量中。此函数将在触发器内调用。触发器(除其他外)会将此变量插入到已创建的新表中。我的代码符合并运行没有错误,但它不起作用。没发生什么事。触发器是一个 ON DELETE 触发器,所以当我从原始表中删除一行时,它就会保留下来。任何线索我错过了什么?谢谢你。

功能:

    CREATE OR REPLACE FUNCTION get_date (i_stdid archive_student.stdid%TYPE)
    RETURN date
    AS
       v_date DATE;
    BEGIN
       SELECT CURRENT_DATE INTO v_date FROM DUAL; 
    RETURN v_date;
    END;

触发器内部的函数调用:

    CREATE OR REPLACE TRIGGER ARCHIVE_DELETED_STUDENT
    AFTER DELETE ON STUDENT
    FOR EACH ROW
    DECLARE 
        v_date archive_student.change_date%TYPE;
    BEGIN
        -- other if statements here that are working properly
        v_date := get_date(:old.stdid);
        INSERT INTO archive_student (change_date) VALUES (v_date);
    END;
4

1 回答 1

2

你做得很好,检查这个 SQLFiddle

只有一件事 - 你stdid在插入时错过了,archive_student所以插入后它是空的。

于 2013-08-10T07:44:43.217 回答