【发布时间】:2020-11-09 04:04:43
【问题描述】:
我目前正在研究 oracle PLSQL 功能,以列出项目编号、职位和参与每个项目的员工姓名。到目前为止,我能够获得所需的输出,但只能在一个一个调用之后才能做到。如何在我的代码中实现一个循环以允许它一次调用它。
[当前代码]
create or replace procedure PROJECTGROUPS(projectid IN WorksOn.P#%TYPE)
IS
PID Project.P#%TYPE;
PNAME Project.PTitle%TYPE;
ENAME Employee.Name%TYPE;
finalRow VARCHAR(2000);
CURSOR query is
select Employee.Name from Employee
left outer join WorksOn On Employee.E# = WorksOn.E#
where WorksOn.P# = projectid
order by Employee.Name ASC
fetch first 20 rows only;
--
--
--
--
--
begin
select P#, PTitle into PID, PNAME from project where project.p# = projectid;
finalRow:= PID || ' ' || PNAME || ': ';
--
open query;
loop
fetch query into ENAME;
if query%NOTFOUND then exit;
end if;
finalRow:= finalRow || CASE WHEN SUBSTR(finalRow ,-2) <> ': ' THEN ', ' END || ENAME;
end loop;
close query;
dbms_output.put_line(finalRow);
return;
end PROJECTGROUPS;
/
execute PROJECTGROUPS(1001)
execute PROJECTGROUPS(1002)
execute PROJECTGROUPS(1003)
execute PROJECTGROUPS(1004)
execute PROJECTGROUPS(1005)
execute PROJECTGROUPS(1006)
show error
[电流输出]
SQL> execute PROJECTGROUPS(1001)
1001 Computation: Alvin, Peter
PL/SQL procedure successfully completed.
SQL> execute PROJECTGROUPS(1002)
1002 Study methods: Bob, Robert
PL/SQL procedure successfully completed.
SQL> execute PROJECTGROUPS(1003)
1003 Racing car: Robert
PL/SQL procedure successfully completed.
SQL> execute PROJECTGROUPS(1004)
1004 Football: Douglass, Eadger, Robert
PL/SQL procedure successfully completed.
SQL> execute PROJECTGROUPS(1005)
1005 Swimming: Robert
PL/SQL procedure successfully completed.
SQL> execute PROJECTGROUPS(1006)
1006 Training: Aban
如何循环我的代码,以便我可以使用执行 PROJECTGROUPS 调用它们。
【问题讨论】:
标签: oracle function loops plsql