首页 > 解决方案 > 显示使用 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;
/

删除行可以正常工作,但我不知道如何查找已删除行的计数并将其显示在结果中,请对此提供帮助。谢谢你的帮助。

标签: oracleplsql

解决方案


提示: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>

另外,我不会参与该程序;让调用者决定并提交(或不提交)。


推荐阅读