首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

错误提示ora-00911:值过多

2011-12-11 
关于ora-00913错误三个表的结构:雇员employee(雇员号empid,姓名empname,年龄age,地址address,薪水sal)部门

关于ora-00913错误
三个表的结构:
雇员employee(雇员号empid,姓名empname,年龄age,地址address,薪水sal)
部门department(部门号deptno,部门名dname,部门经理mgr)
工作work(雇员号empid,部门号deptno,在该部门工作的年限worktime)
题目:为财务部门的雇员加薪,3年以下加3%,3年以上加5%(用PL/SQL实现)
SQL代码:

SQL code
/*创建employee表*/CREATE TABLE employee(empid NUMBER(8), empname VARCHAR2(20), age NUMBER(2), address VARCHAR2(50), sal NUMBER(7));/*创建department表*/CREATE TABLE department(deptno NUMBER(8), dname VARCHAR2(15), mgr VARCHAR2(20));/*创建work表*/CREATE TABLE work(empid NUMBER(8), deptno NUMBER(8), worktime NUMBER(2));/*插入数据*/insert into employee values(1001,'tom',35,'海淀',8000);insert into employee values(1002,'dennis',24,'朝阳',5000);insert into employee values(1003,'john',35,'海淀',4000);insert into employee values(1004,'rick',41,'朝阳',7000);insert into employee values(1005,'bill',45,'海淀',4000);insert into employee values(1006,'frank',24,'朝阳',7000);insert into department values(001,'人事',1002);insert into department values(002,'信息',1004);insert into department values(003,'销售',1005);insert into department values(004,'财务',1006);insert into work values(1001,002,6);insert into work values(1002,001,1);insert into work values(1001,004,2);insert into work values(1001,001,2);insert into work values(1002,004,0);insert into work values(1003,001,4);insert into work values(1004,002,1);insert into work values(1005,003,2);insert into work values(1006,004,4);/*为财务部门的雇员加薪,3年以上加5%*/UPDATE employee SET sal=sal+sal*0.05 WHERE empid IN     (SELECT e.empid,w.worktime FROM employee e INNER JOIN work w ON     e.empid=w.empid INNER JOIN department d ON d.deptno=w.deptno WHERE d.dname='财务' AND w.worktime>3);

错误提示ora-00911:值过多
但是单独用括号里面的查询语句查询就没问题啊。请问这是什么原因啊?

[解决办法]
子查询
(SELECT e.empid,w.worktime FROM employee e INNER JOIN work w ON 
e.empid=w.empid INNER JOIN department d ON d.deptno=w.deptno 
WHERE d.dname='财务' AND w.worktime>3)中多select了一个字段w.worktime

热点排行