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