【发布时间】:2022-01-11 09:12:56
【问题描述】:
上下文
我想使用 HANA HIERARCHY_TEMPORAL 函数来处理具有时间间隔的 SAP KNVH 层次结构; 当简单地用于 SELECT 查询时,这很好用; 当以其他方式使用相同的查询但将其分配给表变量时,结果是不一致的。
我的问题
这个匿名块使用 HANA HIERARCHY_TEMPORAL 函数可以正常工作:
DO
BEGIN
DECLARE hierarchy_type CHAR(1);
DECLARE valid_from CHAR(8);
DECLARE valid_until CHAR(8);
hierarchy_type = 'A' ;
valid_from = '20211201' ;
valid_until = '20211201' ;
SELECT
HIERARCHY_RANK ,
HIERARCHY_TREE_SIZE ,
HIERARCHY_PARENT_RANK ,
HIERARCHY_ROOT_RANK ,
HIERARCHY_LEVEL ,
HITYP ,
VKORG ,
VTWEG ,
SPART ,
KUNNR ,
HKUNNR ,
node_id ,
parent_id ,
valid_from ,
valid_until ,
DATAB ,
DATBI
FROM HIERARCHY_TEMPORAL (
SOURCE
(
SELECT
HIERARCHY_COMPOSITE_ID(
HITYP ,
VKORG ,
VTWEG ,
SPART ,
KUNNR
) AS node_id ,
CASE HKUNNR
WHEN '' THEN NULL
ELSE HIERARCHY_COMPOSITE_ID(
HITYP ,
HVKORG ,
HVTWEG ,
HSPART ,
HKUNNR
)
END AS parent_id ,
HITYP ,
VKORG ,
VTWEG ,
SPART ,
KUNNR ,
HKUNNR ,
DATAB AS valid_from ,
DATBI AS valid_until ,
DATAB ,
DATBI
FROM SAPKTP. KNVH
WHERE
KNVH. HITYP = :hierarchy_type
)
VALID FROM :valid_from UNTIL :valid_until
);
END;
DO
BEGIN
DECLARE tbl_CLIENT_HIERARCHY TABLE (
HIERARCHY_RANK CHAR ,
HIERARCHY_TREE_SIZE CHAR ,
HIERARCHY_PARENT_RANK CHAR ,
HIERARCHY_ROOT_RANK CHAR ,
HIERARCHY_LEVEL CHAR ,
HITYP CHAR ,
VKORG CHAR ,
VTWEG CHAR ,
SPART CHAR ,
KUNNR CHAR ,
HKUNNR CHAR ,
node_id CHAR ,
parent_id CHAR ,
valid_from CHAR ,
valid_until CHAR ,
DATAB CHAR ,
DATBI CHAR
);
DECLARE hierarchy_type CHAR(1);
DECLARE valid_from CHAR(8);
DECLARE valid_until CHAR(8);
hierarchy_type = 'A' ;
valid_from = '20211201' ;
valid_until = '20211201' ;
tbl_CLIENT_HIERARCHY =
SELECT
HIERARCHY_RANK ,
HIERARCHY_TREE_SIZE ,
HIERARCHY_PARENT_RANK ,
HIERARCHY_ROOT_RANK ,
HIERARCHY_LEVEL ,
HITYP ,
VKORG ,
VTWEG ,
SPART ,
KUNNR ,
HKUNNR ,
node_id ,
parent_id ,
valid_from ,
valid_until ,
DATAB ,
DATBI
FROM HIERARCHY_TEMPORAL (
SOURCE
(
SELECT
HIERARCHY_COMPOSITE_ID(
HITYP ,
VKORG ,
VTWEG ,
SPART ,
KUNNR
) AS node_id ,
CASE HKUNNR
WHEN '' THEN NULL
ELSE HIERARCHY_COMPOSITE_ID(
HITYP ,
HVKORG ,
HVTWEG ,
HSPART ,
HKUNNR
)
END AS parent_id ,
HITYP ,
VKORG ,
VTWEG ,
SPART ,
KUNNR ,
HKUNNR ,
DATAB AS valid_from ,
DATBI AS valid_until ,
DATAB ,
DATBI
FROM SAPKTP. KNVH
WHERE
KNVH. HITYP = :hierarchy_type
)
VALID FROM :valid_from UNTIL :valid_until
);
SELECT TOP 10 * FROM :tbl_CLIENT_HIERARCHY;
END;
有人知道为什么吗?
感谢您的帮助。
【问题讨论】:
标签: sql function hierarchy hana