【发布时间】:2021-01-12 18:30:02
【问题描述】:
是否可以在函数内更新表?因为我的什么都不做..
CREATE OR REPLACE FUNCTION rep_ort(id INT, status VARCHAR2, end_date DATE, explanation VARCHAR2)
RETURN VARCHAR2
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
UPDATE reports
SET
id = id,
status = status,
end_date = end_date,
explanation = explanation;
commit;
RETURN 'Updated';
END;
select rep_ort('5','Closed','2021-01-12 17:30','Client fault') from dual;
【问题讨论】:
-
可能不相关:你不应该在 WHERE 子句中使用 id 而不是在 SET 子句中使用 id 吗?
-
也许吧,但它应该是什么样子?哪里 id = id?
-
WHERE id = id 什么都不做...
-
使用与列名不同的参数名
-
你应该使用一个过程。当您在函数中进行更新(或任何其他 DML)时,您不能像
select rep_ort(...) from dual那样使用它,请使用begin ret:= rep_ort(...); end;
标签: oracle plsql stored-functions