sql - 遇到异常时插入的plsql
问题描述
编写一个 PL/SQL 程序(匿名块)以在 dept 表中插入一个新的部门记录,其值如下。(NULL,'LOGISTICS','新加坡')。检查您是否能够成功插入具有这些值的行。如果不成功,则处理限制插入行的错误(使用非预定义异常处理)。异常处理部分应该从表中找到最大的deptno,将其增加1并使用它来插入新记录。我不知道如何插入最大部门编号 +1 的新记录以及“LOGISTICS”、“SINGAPORE”。该值应为 (max(deptno)+1,'LOGISTICS','SINGAPORE')。
我的代码。
declare
e_insert_excep exception;
pragma exception_init(e_insert_excep,-01400);
begin
insert into dept values(NULL,'LOGISTICS','SINGAPORE');
exception
when e_insert_excep then insert into dept(deptno) select max(deptno)+1 from dept;
dbms_output.put_line(sqlerrm);
end;
解决方案
如果这是您要求的,您可以INSERT ... SELECT ...
多列。
...
INSERT INTO dept
(deptno,
<the other targeted columns>)
SELECT max(deptno) + 1,
'LOGISTICS',
'SINGAPORE'
FROM dept;
...
但最好使用自动递增的 ID 定义表。看看这个问题以了解如何实现这一点。
推荐阅读
- python - 使用一个记录器和多个几乎相同的文件处理程序
- firebase - Firebase 安全规则:允许读取 + 写入除单个集合之外的所有内容
- javascript - JSX 中的多个 If 条件
- python - 有什么理由不使用自动提交吗?
- python - 散景图未嵌入 html
- android - 如何通过自定义 LayoutManager 在 recyclerview 中使用 snapHelper
- react-native - 错误提示“无法加载脚本。请确保您正在运行 Metro 服务器...”
- symfony - 增加内存限制 Composer 不起作用
- java - AWS Lambda(VPC 内部)中的 Java 代码不起作用
- python - 当我创建自定义方法模型-> 序列化程序-> 视图时,在 Django API 中得到空括号