我想更新所有学生记录的teacher_id(来自1st的记录) 使用第二个select语句中的new teacher_id选择语句。我在用 下面的代码,不幸的是它不起作用。 任何人都可以告诉我它在哪里打破。感谢
CREATE OR REPLACE PROCEDURE update_teacher IS
u_id NUMBER(6);
CURSOR teacher_exist IS SELECT
st.student_id,
st.teacher_id,
st.college_id,
rd.role_name
FROM
student_info st,
teacher p,
teacher_info tf,
role_enabled f,
role_def rd
WHERE
tf.teacher_id = p.teacher_id
AND st.teacher_id = p.teacher_id
AND tf.teacher_id = f.link_id
AND f.role_id = rd.role_id
AND p.primary_college_id = st.college_id
AND rd.role_id != 109
AND st.transferred = 'Y';
BEGIN
FOR rec IN teacher_exist LOOP
SELECT
p.teacher_id
INTO u_id
FROM
teacher p,
teacher_info ps,
role_enabled f,
role_def rd
WHERE
ps.teacher_id = p.teacher_id
AND ps.teacher_id = f.link_id
AND f.role_id = rd.role_id
AND p.primary_college_id = rec.college_id
AND rd.role_id = 109
AND p.teacher_status = 'A'
AND ROWNUM = 1;
UPDATE student_info sf
SET
sf.teacher_id = u_id
WHERE
sf.student_id = rec.student_id
AND sf.college_id = rec.college_id;
END LOOP;
END;