创建一个名为UPD_JOBSAL的存储过程,以更新作业表中特定职务ID的最低薪资和最高薪资。该过程应提供三个参数:职务ID、新的最低薪资和新的最高薪资。
将异常处理添加到作业表中无效作业ID的帐户中。
create or replace procedure sma212 (jobidnew varchar2, newmin number, newmax number)
is
e exception;
begin
update jobs
set min_salary=newmin, max_salary=newmax
where job_id=jobidnew;
if job_id<>jobidnew THEN
raise e;
end if;
exception
when e then
dbms_output.put_line('invalid jobid');
end;执行时显示错误:必须声明job_id?


有什么建议吗?
发布于 2016-02-03 15:40:53
这一行:
if job_id<>jobidnew THEN不是它前面的UPDATE的一部分,因此标识符job_id不引用该名称的列,而是引用一个单独的(未声明的)变量。
测试UPDATE是否做了任何事情的方法是测试隐式游标属性SQL%notfound,如
if SQL%notfound THEN
RAISE e;完整的过程定义应该是
create or replace procedure sma212 (jobidnew varchar2, newmin number, newmax number)
is
e exception;
begin
update jobs
set min_salary=newmin, max_salary=newmax
where job_id=jobidnew;
if SQL%notfound THEN
raise e;
end if;
exception
when e then
dbms_output.put_line('invalid jobid');
end;https://dba.stackexchange.com/questions/128153
复制相似问题