DECLARE v_sal scott.emp.sal%TYPE; --薪水 v_dep scott.emp%rowtype; --全部 v_deptno EXCEPTION; -- BEGIN SELECT * INTO v_dep FROM scott.emp WHERE deptno=10; IF v_sal IS NULL THEN RAISE v_deptno; ELSIF v_sal<=10000 THEN UPDATE scott.emp SET sal=10000 WHERE deptno=10; ELSE dbms_output.put_line('工资不低于10000元'); END IF; EXCEPTION WHEN v_deptno THEN dbms_output.put_line('工资不正确'); WHEN OTHERS THEN dbms_output.put_line('出现其他异常'); END;
2 回答
不负相思意
TA贡献1777条经验 获得超10个赞
出现其他异常的原因可能是scott.em.sal%TYPE定义出问题了(可能没有正确连接数据库SCOTT方案).
代码中还有一个问题是v_sal没有赋值,正确连接SCOTT方案后,应该出现"工资不正确"的异常;
代码修改为
Select
sal
into
v_sal
from
scott.emp
where
deptno=10;
即可
慕桂英546537
TA贡献1848条经验 获得超10个赞
注释1声名了一个number类型的变量,总长7位,小数点后2位,名是annual_salazy
注释2中的
select
into
是不是将
a.sal
赋给了变量annual_salazy中
注释3
把annual_salazy的值作为函数的返回值。
注释4exception是异常处理。当上面程序出现错误或select语句查不到记录时才执行。
此函数总意思是:通过参数username调用了annual_incomec函数,查找emp表中名字为与参数一致的雇员的薪水(sal)。查到记录了返回该雇员的薪水;没查到则返回一个值空值。
- 2 回答
- 0 关注
- 214 浏览
添加回答
举报
0/150
提交
取消