triggers - 发生 PL/SQL 错误
问题描述
从猫中选择*;
尝试这个
解决方案
您不需要在查询中包含 JOB 表。您在 :NEW 命名空间中拥有所需的信息。在查询中不包括 JOB 表将停止ORA-04091
错误。
您还有两组游标控制语句。选一个。我更喜欢隐式游标语法,因为它打字更少(并且效率略高)。
CREATE OR REPLACE TRIGGER Display_Update_Message
BEFORE UPDATE ON JOBS
FOR EACH ROW WHEN ((old.IsFilled != new.IsFilled) AND (new.isFilled = 'yes'))
BEGIN
DBMS_OUTPUT.PUT_LINE('Seekers affected by closing job '
|| :new.JobID || ': ' || :new.JobName);
FOR UT IN (SELECT JS.LastName
, JS.FirstName
, JS.Email Email
FROM JOBAPPLICATIONS JA
FULL OUTER JOIN JOBSEEKERS JS ON JA.JSID = JS.JSID
WHERE JA.JobID = :new.JobID )
LOOP
DBMS_OUTPUT.PUT_LINE('--' || UT.LastName || ', ' || UT.FirstName || ' ' || UT.Email);
END LOOP;
:new.StopDate := sysdate;
END;
/
顺便说一句,我不确定为什么您的光标中有 FULL OUTER JOIN。我会认为 INNER JOIN 是正确的解决方案。您肯定只想要那些申请过您即将关闭的工作的求职者吗?但是,我把它留在里面是因为我不知道你的业务规则,而且无论如何我已经改变了你的代码:)
推荐阅读
- java - 在 Spring Boot WebFlux 中读取 postman 上传的 Excel 文件
- visual-studio - 在visual studio 2019 intellisense提供的建议列表中上下移动的快捷键
- javascript - 使用下拉菜单更改图像,仅适用于添加的最后一张图像
- connection - snowflake snowsql 错误 250003 (n/a): 未能获得响应。绞刑?
- html - 如何制作带有图像和标题的容器
- flutter - TweenAnimationBuilder 没有正确重复 Flutter
- netcdf - 如何重新采样/升级或重新网格 netcdf 文件?为了比较和做一些计算
- python - 在python中每行打印多个值
- python - 当脚本在没有前面的 py -2 或 -3 的情况下运行时,Python argparse 失败
- google-sheets - 根据完全匹配的列值将数据从一个谷歌工作表的行/列导入另一个工作表