我需要帮助,我已经被困在这里太久了。我已经尝试过很多事情了。如果有任何故障排除,我们将不胜感激。
我有一个现有的表,其中行是 KPI 的类型,行是多个目标级别上的目标。
关键绩效指标 | 目标_50 | 目标_100 | 目标_150 |
---|---|---|---|
关键绩效指标A | 5 | 10 | 20 |
关键绩效指标B | 10 | 30 | 50 |
现在,我正在创建一个需要两个参数的函数:原始分数和 KPI 类型。 例如: KPI(6,'KPI A') 将返回 50% KPI(10,'KPI 1') 将返回 100% KPI(9,'KPI B') 将返回 0% KPI(100,'KPI B') 将返回 150%
这是我的脚本:
create or replace FUNCTION KPI(RAW_SCORE in NUMBER, KPI_TYPE in VARCHAR2)
RETURN NUMBER AS
ACTUAL_SCORE NUMBER;
BEGIN
select case when RAW_SCORE >= target_150 then 1.50
when RAW_SCORE >= target_100 then 1.00
when RAW_SCORE >= target_50 then 0.50
else 0
end into ACTUAL_SCORE
from TARGETS_TABLE
where TARGETS_TABLE.KPI = KPI_TYPE;
RETURN ACTUAL_SCORE;
但是,这总是返回 NULL。我尝试运行相同的 SELECT 语句并手动输入 raw_score 和 kpi_type。它返回预期值。但无论我输入什么,该函数总是返回 null。
如果我能尝试任何见解和故障排除,我将不胜感激。非常感谢。
我尝试创建一个用户定义的函数,其中包含将使用两个输入参数的 SELECT 语句。我期望返回一个值,但它始终为空。
您传递给函数的
KPI_TYPE
值在 TARGETS_TABLE
表中不存在,并且该函数引发 NO DATA FOUND
异常。
SQL 查询正在接收
NO DATA FOUND
异常,并理解这意味着返回值应该是 NULL
,并默默地消耗该异常并替换 NULL
代替它。
解决方案是将
KPI_TYPE
值传递给表中实际存在的函数。