【发布时间】:2013-12-15 18:16:32
【问题描述】:
我写了一个case语句,它可以获取用户创建的应用程序的当前状态;只要用户的应用程序状态发生变化,此语句就会在触发器中触发。当他们的状态变为“已接受”时,我希望我的学生表有一行更新以表明他们正在安置。
我知道该方法可以正常工作,因为我通过在以前的版本上返回 1 和 0 来测试它,但是由于合并了 UPDATE 方法,我的触发器一直失败,我将如何在我的 case 语句中合并 UPDATE 调用?
案例陈述代码:
SELECT DISTINCT CASE
WHEN get_status(:NEW.status_id) = LOWER('Applicant Accepted Offer')
THEN
UPDATE students
SET students.student_on_placement = 1
WHERE applications.student_id = :OLD.student_id;
END AS status_result
FROM status;
get_status 方法(也避免对我的方法提出疑问)
CREATE OR REPLACE FUNCTION get_status( this_id NUMBER )
RETURN VARCHAR2
AS this_type status.status_type%TYPE;
BEGIN
SELECT status_type
INTO this_type
FROM status
WHERE status_id = this_id;
RETURN LOWER(this_type);
END get_status;
【问题讨论】: