У меня есть таблица fpo
, в которой у меня есть несколько полей, и я передаю имя юниверса uname
при вызове хранимой процедуры. Основываясь на этом имени юниверса, мне нужно объединить разные поля для разных имен юниверсов, чтобы сгенерировать universe key
, и мне нужно собрать sh все эти ключи юниверса для json объекта, который я буду использовать позже для l oop в та же самая хранимая процедура.
Я написал приведенный ниже код, но он возвращает только один ключ юниверса. Где, как я написал предел 100, он должен вернуть 100 значений.
CREATE OR REPLACE FUNCTION file_compare(
uname character varying,
tb_name text)
RETURNS text
LANGUAGE 'plpgsql'
COST 100
VOLATILE
AS $BODY$
declare
p_bene_first_name text;
p_bene_last_name text;
p_card_id text;
p_auth_num text;
p_date text;
universe_key text;
begin
select bene_first_name, bene_last_name, card_id, authentication, created_date
INTO
p_bene_first_name ,p_bene_last_name, p_card_id, p_auth_num, p_date from fpo
limit 100;
IF (uname = 'UNI_1')
THEN
SELECT NULLIF(p_card_id, '') || NULLIF(p_auth_num, '') INTO universe_key;
ELSEIF (uname = 'UNI_2')
THEN
SELECT NULLIF(p_card_id, '') || NULLIF(p_date, '') INTO universe_key;
END IF;
return universe_key;
end;
$BODY$;
пример данных
bene_first_name bene_last_name card_id authentication created_date
ABC G 1256 2e4thjjk6 12/12/2018
PQR A 3456 h4j48545k 02/02/2019
В соответствии с моим требованием, я должен получить нижеприведенное после select и pu sh это в некоторый пример переменной fpo_json_data
[{fname": "ABC","lname":"G", "cardid": "1256", "auth": "2e4thjjk6", "cdate": "12/12/2018"},{fname": "PQR","lname":"A", "cardid": "3456", "auth": "h4j48545k", "cdate": "02/02/2019"}]
Затем мне нужно l oop через fpo_json_data и создать ключи юниверса, объединяющие поля, и pu sh эти ключи юниверса в другую переменную json, которая мне нужна вернуть