创建一个PL / SQL块,将新记录插入Department表中从“部门”表中获取最大部门ID并添加10;

问题描述

创建一个PL / SQL块以将新记录插入Department表中。从“部门”表中获取最大部门ID并添加10个

解决方法

我看不到图像,但是-这是我对作业的理解:

当前表内容:

SQL> select * from dept;

    DEPTNO DNAME                LOC
---------- -------------------- --------------------
        10 ACCOUNTING           NEW YORK
        20 RESEARCH             DALLAS
        30 SALES                CHICAGO
        40 OPERATIONS           BOSTON

程序:

SQL> create or replace procedure p_ins_dept (par_dname in varchar2,par_loc in varchar2) is
  2    l_deptno number;
  3  begin
  4    select max(deptno)
  5      into l_deptno
  6      from dept;
  7
  8    insert into dept (deptno,dname,loc)
  9      values (nvl(l_deptno,0) + 10,par_dname,par_loc);
 10  end;
 11  /

Procedure created.

测试:

SQL> exec p_ins_dept ('Test','Zagreb');

PL/SQL procedure successfully completed.

SQL> select * from dept;

    DEPTNO DNAME                LOC
---------- -------------------- --------------------
        50 Test                 Zagreb                    --> here it is
        10 ACCOUNTING           NEW YORK
        20 RESEARCH             DALLAS
        30 SALES                CHICAGO
        40 OPERATIONS           BOSTON

SQL>

请注意,这种方法在多用户环境中很可能会失败,

  • 两个(或更多)用户同时调用该过程,
  • 获取MAX部门编号值
  • 向其中添加10
  • 插入一行
  • 第二个(和其他)用户失败,因为第一个用户-成功插入行而违反了主键

但是可以;对于一个简单的家庭作业问题,我想您不太在意此类事情。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...