您好我无法使用游标更新jobs_new
表中jobs
表中的列,即使我在dbms_output
中得到了正确的输出。它正在更新下面具有相同值的列是代码,请帮忙。
SET SERVER OUTPUT ON;
DECLARE
CURSOR c_emp IS
SELECT
a.job_id,
a.max_salary,
b.job_id
FROM jobs a, jobs_new b
WHERE
a_jobid VARCHAR2(100);
b_jobid VARCHAR2(10);
l_salary NUMBER;
BEGIN
OPEN c_emp;
LOOP
FETCH c_emp INTO a_jobid, l_salary, b_jobid;
-- enter code here
EXIT WHEN c_emp%NOTFOUND;
UPDATE jobs_new
SET max_salary = l_salary
WHERE b_jobid = a_jobid;
dbms_output.put_line(l_salary);
END LOOP;
CLOSE c_emp;
END;
/
答案 0 :(得分:1)
您的查询似乎不完整,在条件之后没有任何内容,
问题在这里
update jobs_new set max_salary = L_SALARY where b_jobid = a_jobid;
应该是
update jobs_new set max_salary = L_SALARY where job_id = a_jobid;
但是考虑到job_is是唯一键,您不必使用游标进行此操作。你可以将一个Update语句作为
update jobs_new a set a.max_salary = (select b.max_salary
from jobs b
where b.job_id = a.job_id);