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语句中运行此功能,
您无法在select
语句中调用对数据进行更改的函数(嗯,除非您声明要使用自主事务,否则不要这样做,但这几乎总是一个坏主意)。这就是为什么您通常不会编写删除数据的函数的原因。如果需要删除数据,则需要一个过程。
关于您的回滚为何不起作用的原因,我猜您首先明确地进行了提交,或者因为您的工具/程序被设置为自动提交而进行了提交,所以>