问题描述
创建一个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
- 插入一行
- 第二个(和其他)用户失败,因为第一个用户-成功插入行而违反了主键
但是可以;对于一个简单的家庭作业问题,我想您不太在意此类事情。