-- 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;