33 lines
1.1 KiB
Plaintext
33 lines
1.1 KiB
Plaintext
-- FUNCTION: dbo.translatebdg(text)
|
|
|
|
-- DROP FUNCTION IF EXISTS dbo.translatebdg(text);
|
|
|
|
CREATE OR REPLACE FUNCTION dbo.translatebdg(
|
|
p_bdgcod text)
|
|
RETURNS text
|
|
LANGUAGE 'plpgsql'
|
|
COST 100
|
|
VOLATILE PARALLEL UNSAFE
|
|
AS $BODY$
|
|
DECLARE
|
|
resultName TEXT;
|
|
BEGIN
|
|
-- ใช้ string_to_array เพื่อแยก text '24,33' เป็น array ['24','33']
|
|
-- ใช้ ANY เพื่อหาว่า bdgcod อยู่ใน array นั้นไหม
|
|
-- ใช้ string_agg เพื่อรวมชื่อที่ได้กลับมาเป็น text เดียว คั่นด้วย ', '
|
|
SELECT string_agg(bdgnam, ', ')
|
|
INTO resultName
|
|
FROM dbo.bdgmst
|
|
WHERE bdgcod = ANY(string_to_array(p_bdgcod, ','));
|
|
|
|
-- ถ้าหาไม่เจอเลย ให้คืนค่าเดิมกลับไป (Optional: หรือจะคืน NULL ก็ได้)
|
|
IF resultName IS NULL THEN
|
|
RETURN p_bdgcod;
|
|
END IF;
|
|
|
|
RETURN resultName;
|
|
END;
|
|
$BODY$;
|
|
|
|
ALTER FUNCTION dbo.translatebdg(text)
|
|
OWNER TO postgres; |