首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >plsql中的过程问题

plsql中的过程问题
EN

Database Administration用户
提问于 2016-02-03 14:39:26
回答 1查看 294关注 0票数 -3

创建一个名为UPD_JOBSAL的存储过程,以更新作业表中特定职务ID的最低薪资和最高薪资。该过程应提供三个参数:职务ID、新的最低薪资和新的最高薪资。

将异常处理添加到作业表中无效作业ID的帐户中。

代码语言:javascript
复制
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

有什么建议吗?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2016-02-03 15:40:53

这一行:

代码语言:javascript
复制
if job_id<>jobidnew THEN

不是它前面的UPDATE的一部分,因此标识符job_id不引用该名称的列,而是引用一个单独的(未声明的)变量。

测试UPDATE是否做了任何事情的方法是测试隐式游标属性SQL%notfound,如

代码语言:javascript
复制
if SQL%notfound THEN
  RAISE e;

完整的过程定义应该是

代码语言:javascript
复制
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;
票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/128153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档