删除程序的 oracle PLSQL 例外

标签: Oracle
发布时间: 2017/4/15 19:08:35
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想要创建一个简单的程序,当通过主键将从表中删除记录。

我读过关于 SQL %初一此线程。 我认为这一问题的解决方案是使用一个函数,检查传递的参数是该表的主键,并返回一个布尔值。 我相信有更多的事情,尽管找这里。

什么其他的问题或特定的例外情况应看他?

这里是我的程序的基本模板︰

create or replace procedure delete_employee
  ( employee_id_i in employees.employee_id%type) is
begin
  if valid_employee(employee_id_i) then
    delete from employees where employee_id = employee_id_i;
  end if;
exception
  when others then
    log_error_proc(dbms_utility.format_error_stack(),
                   dbms_utility.format_error_backtrace());
end delete_employees;

解决方法 1:

您应该使用 ROWCOUNT 属性的隐式游标相反。这将返回影响的行数从 DELETE 语句,使你不必查询中的表和你 valid_employee 函数。

create or replace procedure delete_employee
  ( employee_id_i in employees.employee_id%type) is
begin
  delete from employees where employee_id = employee_id_i;
  if SQL%ROWCOUNT == 0 then
    null; -- throw exception, write log message, return something...
  end if;
exception
  when others then
    log_error_proc(dbms_utility.format_error_stack(),
                   dbms_utility.format_error_backtrace());
end delete_employees;
赞助商