我使用以下用户定义的函数从emp表中删除了一个员工数据,然后尝试回滚它但无法获取数据

create or replace function delete_EMP
(
    PENO IN NUMber
)
return varchar2 as
VNAME VARCHAR2(20);
begin
    SELECT ENAME INTO VNAME FROM EMP WHERE EMPNO=PENO;
    DELETE FROM EMP WHERE EMPNO=PENO;
  return VNAME;
end;

我该如何在select语句中运行此功能,

alexisyuan 回答:我使用以下用户定义的函数从emp表中删除了一个员工数据,然后尝试回滚它但无法获取数据

您不能调用在select语句中对数据进行更改的函数(嗯,除非您声明它使用自主事务,否则不要这样做,但这几乎总是一个坏主意)。这就是为什么您通常不会编写删除数据的函数的原因。如果需要删除数据,则需要一个过程。

关于您的回滚为何不起作用的原因,我猜您是先明确地提交还是因为您的工具/程序被设置为自动提交

本文链接:https://www.f2er.com/2923137.html

大家都在问