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

问题描述 投票:0回答:1
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语句中运行此功能,

database oracle plsql delete-row rollback
1个回答
0
投票

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

关于您的回滚为何不起作用的原因,我猜您首先明确地进行了提交,或者因为您的工具/程序被设置为自动提交而进行了提交,所以>

© www.soinside.com 2019 - 2024. All rights reserved.