【发布时间】:2012-05-24 12:47:11
【问题描述】:
我创建了一个触发器,以便在职位更新时插入员工 ID。 在某些情况下,一个职位有很多员工,因此触发器无法插入所有员工(只有 1 个)。我需要所有员工 ID
任何人都可以帮我处理这段代码吗?
问候
create or replace trigger postn_updt
after update on postn
for each row
declare
cursor m is
select u.login
from user u,
party_per s
where u.row_id=s.person_id
and s.party_id=:new.row_id;
rownum varchar2(10);
begin
if updating ('postn_type_cd') then
open mult;
fetch mult into rownum;
insert into test123
(employee_number,type,request_date,remarks)
values
(( rownum,
'Updated',sysdate,''
);
close m;
end if;
end;
【问题讨论】:
-
你要么需要一个循环,要么需要某种形式的“INSERT...SELECT”语句。
-
ROWNUM是 SQL 中的关键字:这会使您的代码不标准(因此令人困惑),因为您的查询中的rownum没有其预期的行为。 -
@VincentMalgrat 在这个例子中,ROWNUM 是一个变量......不是关键字
-
@ShoeLace 使用与非常常见的标准 SQL 函数共享其名称的变量通常是一个坏主意。它是shadowing 的一种形式,这会使人类读者感到困惑。好的代码应该是人机可读的。
-
同意..我只是想指出在这种情况下它不会引起问题
标签: oracle plsql triggers cursor