【发布时间】:2022-01-15 21:14:41
【问题描述】:
如果报销请求未获批准,如何向函数添加输出消息?
这是我的函数的代码:
create or replace FUNCTION reimbursement_check(CREATIONDATE DATE)
RETURN DATE
IS
M_DATE DATE ;
BEGIN
SELECT UpdateDate
INTO M_DATE
FROM REIMBURSEMENTREQUEST
WHERE ReimbursementStatus = 'APPR'
AND UpdateDate = CREATIONDATE;
M_DATE := CREATIONDATE + 7;
RETURN M_DATE;
END;
【问题讨论】:
-
报销状态将不等于“NOTA”,因为您在 WHERE 子句中指定了报销状态 = 'APPR'。如果要报告没有返回批准的记录,可以使用 WHEN SQL%NOTFOUND dbms_output 等
-
你说得对,这绝对可以。我才发现我说的不是更具体,还有另外一种状态。哪个是提交状态。我认为当只有 2 个状态时,WHEN SQL%NOTFOUND dbms_output 等效果更好。 SUBMITTEED 状态会改变吗?对不起,如果我问的是简单的问题。我刚接触 SQL。
-
一般来说,你的想法是个坏主意。如果有人使用无法显示 dbms_output.put_line 结果的工具(例如 Oracle Apex、Oracle Forms...),则没有人会看到任何“消息”。我猜最终用户不会从 SQL*Plus 或 SQL Developer 调用该函数。因此,您宁愿找到另一种选择。由于函数返回 DATE 数据类型,您 - 显然 - 不能返回该消息(因为它是一个字符串)。此外,SELECT 语句甚至没有检查“ReimbursementStatus” - 它用于 WHERE 子句。恐怕这里有很多问题。
-
是的,明白了。在这种情况下,我可以使用 apex_application.g_print_success_message := 代替。
-
是关于在 Apex 中“打印”某些内容(我根本不知道)还是从 PL/SQL 函数返回某些内容(我非常熟悉)的问题?
标签: oracle function plsql output