楷霖名字意思是什么:oracle中的pl/sql问题

来源:百度文库 编辑:高校问答 时间:2024/05/05 16:07:02
建表
CREATE TABLE Salary_Records
(empno VARCHAR2(10) ,
deptcode varchar2(10),
empcode varchar2(10),
empname varchar2(50),
working_Days NUMBER,
empsal NUMBER);
插入数据

INSERT INTO Salary_Records VALUES ('E001', 'BH01', 'DP02' , 'John Smith' , 30, 12000);
INSERT INTO Salary_Records VALUES ('E002', 'BH02', 'DP02' , 'Jane' , 25, 15000);
INSERT INTO Salary_Records VALUES ('E003', 'BH03', 'DP01' , 'Harry' , 30, 12000);
INSERT INTO Salary_Records VALUES ('E004', 'BH03', 'DP03' , 'Joe' , 30, 20000);
INSERT INTO Salary_Records VALUES ('E005', 'BH03', 'DP02' , 'Michael' , 30, 18000);
INSERT INTO Salary_Records VALUES ('E006', 'BH05', 'DP01' , 'Jack Aranck' , 30, 18000);
INSERT INTO Salary_Records VALUES ('E007', 'BH05', 'DP03' , 'George' , 30, 18000);

在sql*plus中执行下列语句

set serveroutput on
declare
dptcode varchar2(15);
emp_code varchar2(10);
salary number;
begin
select deptcode,empcode,empsal into dptcode,emp_code,
salary from salary_records where empcode='&empid'
for update of empsal;
if dptcode='dp01' then
update salary_records set empsal=salary+2000
where empcode=emp_code;
elseif dptcode='dp02' then
update salary_records set empsal=salary+1700
where empcode=emp_code;
elseif dptcode='dp03' then
update salary_records set empsal=salary+1500
where empcode=emp_code;
end if;
commit;
end

显示为

输入 empid 的值: dp01
原值 7: salary from salary_records where empcode='&empid'
新值 7: salary from salary_records where empcode='dp01'
elseif dptcode='dp02' then
*
ERROR 位于第 12 行:
ORA-06550: 第 12 行, 第 10 列:
PLS-00103: 出现符号 "DPTCODE"在需要下列之一时:
:=.(@%;
ORA-06550: 第 15 行, 第 10 列:
PLS-00103: 出现符号 "DPTCODE"在需要下列之一时:
:=.(@%;
ORA-06550: 第 20 行, 第 3 列:
PLS-00103: 出现符号 "end-of-file"在需要下列之一时:
if

请高手指教如何修改,谢谢!

1 写一句复杂的SQL语句同样可以实现这个目的。
2 如果要使用过程,需要修改你的写法(循环结构、分支结构),用case when我调试OK)。