我可以在 PL/SQL 函数中执行更新吗?
Can I perform update inside PL/SQL function?
是否可以在函数内更新 table?因为我的什么都不做..
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;
你什么都不做,因为你命名的参数与列同名,所以你只是将整个 table 更新为相同的值。
重命名参数并 - 可能 - 包含 WHERE
子句。
尽管您可以 执行此操作,但程序应用于此目的。
CREATE OR REPLACE FUNCTION rep_ort
(p_id INT, p_status VARCHAR2, p_end_date DATE, p_explanation VARCHAR2)
RETURN VARCHAR2
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
UPDATE reports
SET
id = p_id,
status = p_status,
end_date = p_end_date,
explanation = p_explanation;
commit;
RETURN 'Updated';
END;
是否可以在函数内更新 table?因为我的什么都不做..
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;
你什么都不做,因为你命名的参数与列同名,所以你只是将整个 table 更新为相同的值。
重命名参数并 - 可能 - 包含 WHERE
子句。
尽管您可以 执行此操作,但程序应用于此目的。
CREATE OR REPLACE FUNCTION rep_ort
(p_id INT, p_status VARCHAR2, p_end_date DATE, p_explanation VARCHAR2)
RETURN VARCHAR2
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
UPDATE reports
SET
id = p_id,
status = p_status,
end_date = p_end_date,
explanation = p_explanation;
commit;
RETURN 'Updated';
END;