创建 oracle 函数以根据 excel 公式计算字段
create oracle function to calculate fields based on excel formula
需要一点帮助。需要在 oracle 包中创建一个函数来计算某些列。计算是根据excelsheet和excel公式=IF(A1=1,A2*0.1,IF(A1=2,A2*0.2,IF(A1=3,A2*0.4,IF(A1=4,A2*0.6,IF(A1=5,A2*0.8,)))))
得到列值。所以我想在我的 oracle 函数中进行这些计算。到目前为止,我有以下内容:
FUNCTION GET_COST(
p_parametr1 IN NUMBER DEFAULT NULL,
p_parametr2 IN NUMBER DEFAULT NULL,
p_parametr3 IN NUMBER DEFAULT NULL
) RETURN NUMBER
AS
BEGIN
CASE
WHEN p_parametr1 = 1 THEN p_parametr2 * 0.1
WHEN p_parametr1 = 2 THEN p_parametr2 * 0.2
WHEN p_parametr1 = 3 THEN p_parametr2 * 0.4
WHEN p_parametr1 = 4 THEN p_parametr2 * 0.6
WHEN p_parametr1 = 5 THEN p_parametr2 * 0.8
ELSE RETURN NULL
END CASE;
END GET_COST;
所以 parametr3(第 3 列)的值取决于第 1 列和第 2 列的计算总和。但是我的函数出了点问题,无法正常工作。也许使用 then WHEN CASE 不是个好主意?!
您的语法错误 - 您需要一个 return
语句来表示整个表达式:
CREATE OR REPLACE
FUNCTION GET_COST(
p_parametr1 IN NUMBER DEFAULT NULL,
p_parametr2 IN NUMBER DEFAULT NULL,
p_parametr3 IN NUMBER DEFAULT NULL
) RETURN NUMBER
AS
BEGIN
RETURN CASE
WHEN p_parametr1 = 1 THEN p_parametr2 * 0.1
WHEN p_parametr1 = 2 THEN p_parametr2 * 0.2
WHEN p_parametr1 = 3 THEN p_parametr2 * 0.4
WHEN p_parametr1 = 4 THEN p_parametr2 * 0.6
WHEN p_parametr1 = 5 THEN p_parametr2 * 0.8
ELSE NULL
END;
END GET_COST;
需要一点帮助。需要在 oracle 包中创建一个函数来计算某些列。计算是根据excelsheet和excel公式=IF(A1=1,A2*0.1,IF(A1=2,A2*0.2,IF(A1=3,A2*0.4,IF(A1=4,A2*0.6,IF(A1=5,A2*0.8,)))))
得到列值。所以我想在我的 oracle 函数中进行这些计算。到目前为止,我有以下内容:
FUNCTION GET_COST(
p_parametr1 IN NUMBER DEFAULT NULL,
p_parametr2 IN NUMBER DEFAULT NULL,
p_parametr3 IN NUMBER DEFAULT NULL
) RETURN NUMBER
AS
BEGIN
CASE
WHEN p_parametr1 = 1 THEN p_parametr2 * 0.1
WHEN p_parametr1 = 2 THEN p_parametr2 * 0.2
WHEN p_parametr1 = 3 THEN p_parametr2 * 0.4
WHEN p_parametr1 = 4 THEN p_parametr2 * 0.6
WHEN p_parametr1 = 5 THEN p_parametr2 * 0.8
ELSE RETURN NULL
END CASE;
END GET_COST;
所以 parametr3(第 3 列)的值取决于第 1 列和第 2 列的计算总和。但是我的函数出了点问题,无法正常工作。也许使用 then WHEN CASE 不是个好主意?!
您的语法错误 - 您需要一个 return
语句来表示整个表达式:
CREATE OR REPLACE
FUNCTION GET_COST(
p_parametr1 IN NUMBER DEFAULT NULL,
p_parametr2 IN NUMBER DEFAULT NULL,
p_parametr3 IN NUMBER DEFAULT NULL
) RETURN NUMBER
AS
BEGIN
RETURN CASE
WHEN p_parametr1 = 1 THEN p_parametr2 * 0.1
WHEN p_parametr1 = 2 THEN p_parametr2 * 0.2
WHEN p_parametr1 = 3 THEN p_parametr2 * 0.4
WHEN p_parametr1 = 4 THEN p_parametr2 * 0.6
WHEN p_parametr1 = 5 THEN p_parametr2 * 0.8
ELSE NULL
END;
END GET_COST;