1. 아래와 같은 TEXT를 리턴하는 FUNCTION 을 생성한다. TEXT의 내용은 JSON 형태의 문자열이다.
CREATE FUNCTION TBL_IDT_AUTH_TT_DEV(
IN_USER_ID VARCHAR(1000)
)
RETURNS TEXT CHARSET UTF8MB4 -- TEXT보다 길다면 MEDIUMTEXT 등을 활용할 수 있다
DETERMINISTIC
BEGIN
DECLARE V_RETURN TEXT; -- TEXT보다 길다면 MEDIUMTEXT 등을 활용할 수 있다
SELECT JSON_ARRAYAGG(
JSON_OBJECT(
'AUTH_CD' , A.AUTH_CD
, 'ADMIN_YN' , A.ADMIN_YN
))
INTO V_RETURN
FROM (
SELECT A.AUTH_CD AS AUTH_CD
, A.ADMIN_YN AS ADMIN_YN
FROM CS_WORK_AUTH A
WHERE A.USER_ID = IN_USER_ID
) A
;
RETURN V_RETURN;
END
2. 1.에서 생성한 FUNCTION 을 SELECT 해보면 아래와 같은 결과가 나온다.
SELECT TBL_IDT_AUTH_TT_DEV('20239010')
3. 2. 의 결과를 JOSN_TABLE을 이용해서 파싱하여 사용한다.
SELECT A.*
FROM JSON_TABLE(
TBL_IDT_AUTH_TT_DEV('20239010')
, '$[*]' COLUMNS (
AUTH_CD VARCHAR(255) PATH '$.AUTH_CD'
, ADMIN_YN VARCHAR(255) PATH '$.ADMIN_YN'
)
) A
'DB > MYSQL' 카테고리의 다른 글
[MYSQL] Mybatis CRUD DML 생성 SQL (0) | 2025.04.30 |
---|