PL⼀SQL问题,急!!!PLS00382

详情看图,简单的循环语句。
2024-12-29 01:57:36
推荐回答(2个)
回答1:

declare
emp_no emp.empno%type;
emp_name emp.ename%type;
begin
for i in (select t.empno from emp t) loop
select e.ename
into emp_name
from emp e
where i.emp_no = e.empno;
dbms_output.put_line(emp_name);
end loop;
end;

你的语句写的并不好,不理会调优,就是的逻辑也混乱。用了cursor,在循环里面又用相同的逻辑再执行一次。
可以修改为:

declare
begin
for i in (select t.empno, t.ename from emp t) loop
dbms_output.put_line(i.ename);
end loop;
end;

回答2:

看你的脚本,应该是变量引用的问题,EMP_NO 定义重复,在for循环里也又定义了一个复合变量,在dbms_output.put_line()里引用应该是EMP_NO.empno才对,你引用错了。