在Postgres中的存储过程中循环遍历数据

时间:2020-01-24 10:17:56

标签: postgresql stored-procedures stored-functions

我有一个表fpo,其中有多个字段,并且在调用存储过程时传递了Universe名称uname。基于此Universe名称,我需要为不同的Universe名称连接不同的字段以生成universe key,并且需要将所有这些Universe键推送到json对象,稍后将在同一存储过程中使用它进行循环。 / p>

我写了下面的代码,但是它只返回单个Universe键。正如我写的限制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

根据我的要求,我必须在选择后获得以下内容并将其推送到一些变量示例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"}]

然后,我必须遍历fpo_json_data并创建连接字段的Universe密钥,并将这些Universe密钥推送到另一个需要返回的json变量中

0 个答案:

没有答案