繁体   English   中英

从层次结构更新表 function - SAP HANA

[英]Update table from hierarchy function - SAP HANA

一直在为此苦苦挣扎-希望有人可以提供帮助...

我在 SAP HANA Studio 中创建了一个用户定义的标量 function (UDF),它应该根据输入PROFITCENTERHIERARCHY_LEVEL从层次结构中返回“Knudebeskrivelse”(节点描述):

CREATE OR REPLACE FUNCTION GET_KNUDEBESKRIVELSE_ON_REQUESTED_LEVEL
(IN PROFITCENTER NVARCHAR (40)
,IN HIERARCHY_LEVEL_INPUT INT)

returns KNUDEBESKRIVELSE NVARCHAR (40)

AS
BEGIN
DECLARE KNUDEBESKRIVELSE NVARCHAR(40);

SELECT
"Knudebeskrivelse" INTO KNUDEBESKRIVELSE
        
    FROM HIERARCHY_ANCESTORS (
    SOURCE HIERARCHY (
        SOURCE (
            select "Knude-ID" AS node_id, "ID for overordnet" as parent_id, * FROM "FRS_PRO244"."GAAA_FKO"
            )
            CACHE FORCE
            )
START WHERE "Knudenavn" = PROFITCENTER
            )
WHERE HIERARCHY_LEVEL = HIERARCHY_LEVEL_INPUT
;

END
;

使用 function,我想更新表AP_MYNDIGHED MYNDIGHEDAP_MYNDIGHED获取值PROFITCENTERHIERARCHY_LEVEL (到目前为止我只是硬编码“2” - 稍后将更改)如下:

UPDATE FRS_PRO244.AP_MYNDIGHED
SET MYNDIGHED = "FRS_PRO244"."GET_KNUDEBESKRIVELSE_ON_REQUESTED_LEVEL"(AP_MYNDIGHED.PROFITCENTER, 2)

function 创建并运行时没有错误消息,但字段MYNDIGHED未更新 - 或者更确切地说,它正在被清空......

我怀疑问题在于由于 function 中的某些错误导致返回值为 null,但我不确定如何测试和解决此问题。

我已经尝试创建一个类似的表 UDF,它返回请求的值就好了......这里的问题是我不知道如何在 set-statement 中使用表 function 结果。

无论如何,可能是一些基本错误(我对此不是很有经验) - 希望有人能指出我正确的方向。

谢谢!

好吧,我终于让它工作了 - 这个 function 代码可以解决问题:

CREATE OR REPLACE FUNCTION GET_KNUDEBESKRIVELSE_ON_REQUESTED_LEVEL_SCALAR
(IN PROFITCENTER NVARCHAR (40)
,IN HIERARCHY_LEVEL_INPUT INT)

returns KNUDEBESKRIVELSE_OUT NVARCHAR(40)

AS
BEGIN
DECLARE KNUDEBESKRIVELSE NVARCHAR(40);

SELECT KNUDEBESKRIVELSE INTO KNUDEBESKRIVELSE_OUT
FROM HIERARCHY_ANCESTORS (
SOURCE HIERARCHY (
SOURCE (
select "Knude-ID" AS node_id, "ID for overordnet" as parent_id, "Knudebeskrivelse" AS KNUDEBESKRIVELSE, "Knudenavn" as KNUDENAVN FROM "FRS_PRO244"."GAAA_FKO"
)
CACHE FORCE
)
START WHERE KNUDENAVN = PROFITCENTER
)
WHERE HIERARCHY_LEVEL = HIERARCHY_LEVEL_INPUT
;
  
END;

似乎我可能在代码中引入了一些混淆变量'KNUDEBESKRIVELSE'命名......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM