- 我无法理解错误在哪里
CREATE OR REPLACE FUNCTION get_person_membership (IN person_urn CHARACTER VARYING)
RETURNS TEXT AS
$BODY$
DECLARE
result text;
urn ALIAS FOR $1;
BEGIN
SELECT INTO result pers.mx_groupmember FROM mt_person AS pers, mxt_recordheader AS rech
WHERE rech.primaryurn = 'urn'
AND rech.entitytype = 'person'
AND rech.logicalserverprefix = 'EA'
AND rech.id = pers.id;
RETURN result;
END;
$BODY$
LANGUAGE plpgsql
VOLATILE
COST 100
答案 0 :(得分:1)
我简化了您的查询:
如果您不需要其他任何地方,您可以直接返回结果。
从get_person_membership中选择*('某些');
CREATE OR REPLACE FUNCTION get_person_membership (IN person_urn CHARACTER VARYING)
RETURNS TEXT AS
$BODY$
BEGIN
RETURN (select pers.mx_groupmember --returns single value
FROM mt_person AS pers, mxt_recordheader AS rech
WHERE rech.primaryurn = $1 --input value from person_urn
AND rech.entitytype = 'person'
AND rech.logicalserverprefix = 'EA'
AND rech.id = pers.id);
END;
$BODY$
LANGUAGE plpgsql
VOLATILE
COST 100
答案 1 :(得分:0)
不需要PL / pgSQL,一个简单的SQL函数就可以:
CREATE OR REPLACE FUNCTION get_person_membership (IN person_urn CHARACTER VARYING)
RETURNS TEXT AS
$BODY$
SELECT pers.mx_groupmember
FROM mt_person AS pers
JOIN mxt_recordheader AS rech ON rech.id = pers.id
WHERE rech.primaryurn = person_urn --<< input parameter
AND rech.entitytype = 'person'
AND rech.logicalserverprefix = 'EA';
$BODY$
LANGUAGE sql;