注册

mysql函数@变量写法在达梦中如何修改

欧欢 2022/09/09 1210 2 已解决

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:image.png
完整函数:
CREATE or REPLACE FUNCTION getParentOrgByUid(name varchar2(4000))
RETURN varchar2(4000)
AS
sPid varchar2(4000);
sPidTemp varchar2(4000);
pid varchar2(4000);
count int DEFAULT 0;
allpid varchar2(4000);
BEGIN
sPidTemp:= ‘’;
SELECT
GROUP_CONCAT(DISTINCT (CAST(id AS char))) INTO sPid
FROM “SYSDBA”.“organization”
WHERE id IN (SELECT
nodeid
FROM “SYSDBA”.“user”
WHERE username LIKE CONCAT(‘%’, name, ‘%’)
AND state = 1);
allpid:= ‘’;
WHILE (count = 0)
LOOP
IF (sPid IS NULL) THEN
allpid:= ‘-1’;
count:= 1;
ELSE
pid:= SUBSTRING_INDEX(sPid, ‘,’, 1);
sPidTemp: = CONCAT(sPidTemp, ‘,’, pid);
IF LENGTH(pid) = LENGTH(sPid) THEN
count:= 1;
sPid:= SUBSTRING(sPid FROM LENGTH(SUBSTRING_INDEX(sPid, ‘,’, 1)) FOR LENGTH(sPid) + 1);
ELSE
sPid:= SUBSTRING(sPid FROM LENGTH(SUBSTRING_INDEX(sPid, ‘,’, 1)) + 2 FOR LENGTH(sPid) + 1);
END IF;
SELECT
GROUP_CONCAT(CAST(id AS char)) INTO sPidTemp
FROM (SELECT
@r AS _id,
(SELECT
@r:= parentid
FROM “SYSDBA”.“organization”
WHERE id = _id) AS parent_id,
@l:= @l + 1 AS lvl
FROM (SELECT
@r:= pid,
@l:= ‘’) vars,
“SYSDBA”.“organization” h
WHERE @r<> ‘’) T1
JOIN “SYSDBA”.“organization” T2
ON T1._id = T2.id;
allpid:= CONCAT_WS(‘,’, pid, sPidTemp, allpid);
END IF;
END LOOP;
RETURN allpid;
END getParentOrgByUid;

回答 0
暂无回答
扫一扫
联系客服