0
我是新手,在PL/SQLPL/SQL游标来计算的项目
我必须完成的过程,计算选择员工ID的平均通过解析程序PARAMET和计算的项目数量该员工已采取数
这里是我的表:
CREATE TABLE employee(
empid number(5),
empname varchar(20),
address varchar(20),
no_of_dependents number(5),
deptno number(5),
CONSTRAINT EMPLOYEE_PKEY PRIMARY KEY(empid),
CONSTRAINT EMPLOYEE_FKEY FOREIGN KEY(deptno) REFERENCES department(deptno));
CREATE TABLE project(
projectno number(5),
location varchar(20),
incharge number(5),
rate_per_hour number(5),
CONSTRAINT PROJECT_PKEY PRIMARY KEY(projectno),
CONSTRAINT PROJECT_FKEY FOREIGN KEY(incharge) REFERENCES employee(empid));
CREATE TABLE assignment(
empid number(5),
projectid number(5),
hours number(5),
CONSTRAINT ASSIGNMENT_FKEY FOREIGN KEY(empid) REFERENCES employee(empid),
CONSTRAINT ASSIGNEMNT_FKEY2 FOREIGN KEY(projectid) REFERENCES project(projectno));
这里基本上是PL/SQL过程
set serveroutput on
create or replace procedure disp(idd number) is
cursor c1 is select avg(ass.hours) from assignment ass join employee e on
e.empid=ass.empid
where ass.empid=idd;
cursor c2 is select empname from employee where empid=idd;
v_name varchar(20);
cursor c3 is select count(p.projectno)
from employee e join project p on
e.empid=p.incharge
where p.incharge=idd;
v_count_nr number;
begin
open c1;
fetch c1 into v_avg_nr;
close c1;
open c2;
fetch c2 into v_name;
close c2;
open c3;
fetch c3 into v_count_nr;
close c3;
dbms_output.put_line('Employee: '||idd);
dbms_output.put_line('Employee Name: '||v_name);
dbms_output.put_line('Number of projects: '||v_count_nr);
dbms_output.put_line('Average Working Hours: '||v_avg_nr);
end disp;
/
execute disp(101);
条
我期待的问题,其中C3具有计数项目员工的数量了
据统计错误 这里是输出什么,我得到:
Employee: 101
Employee Name: Marlen
Number of projects: 20
Average Working Hours: 107.4
感谢您的帮助!我该如何检查平均工作时间是否小于10,那么员工的工资保持不变,否则检查项目数量是否小于4,然后是工资的5%,否则工资的10%加到工资中
非常感谢!我修改了c3光标c3是来自员工e加入项目p的select count(p.projectno) e.empid = p.incharge 其中p.incharge = idd; v_count_nr编号; – mydreamadsl 2011-12-14 17:22:33