oracle - 显示使用 pl/sql 删除的行数
问题描述
我想创建一个从 Employee 表中删除行的过程。它应该接受1个参数,即部门名称;只删除属于该部门的员工记录。显示删除了多少员工,否则引发“DeptNotFoundException”并打印消息“未找到记录。”。
EMPLOYEE:
Column name Data type Constraints
EMP_ID NUMBER(5) PK
EMP_NAME VARCHAR2(25) NOT NULL
SALARY NUMBER(10,2)
DEPT VARCHAR2(25)
Sample Output:
2 Employee record(s) got deleted.
我试过的代码是 -
create or replace procedure DELETE_EMPLOYEE(v_dept IN EMPLOYEE.dept%TYPE)
is
begin
delete EMPLOYEE where dept = v_dept;
commit;
end;
/
删除行可以正常工作,但我不知道如何查找已删除行的计数并将其显示在结果中,请对此提供帮助。谢谢你的帮助。
解决方案
提示:sql%rowcount
。
SQL> create or replace procedure DELETE_EMPLOYEE(v_dept IN EMPLOYEE.dept%TYPE)
2 is
3 begin
4 delete EMPLOYEE where dept = v_dept;
5 dbms_output.put_Line('deleted ' || sql%rowcount || ' row(s)');
6 end;
7 /
Procedure created.
SQL> set serveroutput on
SQL> exec delete_employee(10);
deleted 3 row(s)
PL/SQL procedure successfully completed.
SQL>
另外,我不会参与该程序;让调用者决定并提交(或不提交)。
推荐阅读
- ruby-on-rails - 无法使用 Rails 和 Wicked PDF 打印换行符
- python-3.x - Go strings.Contains() 比 Python3 慢 2 倍?
- r - 编辑 shiny.tag 元素
- kubernetes - 如何获得 Kubernetes 的单个 pod 名称?
- windows - Redmon 以用户 SYSTEM 而不是当前用户身份启动应用程序
- c# - 在运行时隐藏 PropertyGrid 中的一些属性
- amazon-web-services - 访问没有区域端点的 amazon s3 存储桶
- ibm-mq - 使用 MQ Explorer 将多行测试消息放入 MQ 队列
- shell - 为什么在while循环之前不允许heredoc重定向
- c# - 如何在c#中对数字字符串列表进行排序