在postgresql函数的表中插入值后,如何返回集合、数组或任何插入值?

在postgresql函数的表中插入值后,如何返回集合、数组或任何插入值?,postgresql,Postgresql,我只想返回一个数组或设置值(id和名称),这样在插入行后,我就可以在node.js应用程序中console.log() CREATE OR REPLACE FUNCTION public.create_user( data json) RETURNS text[] LANGUAGE 'plpgsql' COST 100 VOLATILE PARALLEL UNSAFE AS $BODY$ declare r_array text[]; begin

我只想返回一个数组或设置值(id和名称),这样在插入行后,我就可以在node.js应用程序中
console.log()

CREATE OR REPLACE FUNCTION public.create_user(
    data json)
    RETURNS text[]
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
AS $BODY$
declare r_array text[];
begin
    insert into users(id, name, age, gender, mobile, email, password, time)
select 
    (data->>'id')::int,
    data->>'name',
    (data->>'age')::int,
    data->>'gender',
    (data->>'mobile')::bigint,
    data->>'email',
    data->>'password',
    data->>'time'
    returning
        users.id as r_id,
        users.name as r_name;
    insert into r_array values (r_id,r_name);
    return r_array;
end
$BODY$;

ALTER FUNCTION public.create_user(json)
    OWNER TO postgres;
存储行的我的表:

CREATE TABLE public.users
(
    id integer NOT NULL,
    name character varying(50) COLLATE pg_catalog."default" NOT NULL,
    age integer NOT NULL,
    gender character varying(8) COLLATE pg_catalog."default" NOT NULL,
    mobile bigint NOT NULL,
    email character varying(200) COLLATE pg_catalog."default" NOT NULL,
    password character varying(200) COLLATE pg_catalog."default" NOT NULL,
    "time" character varying COLLATE pg_catalog."default" NOT NULL,
    CONSTRAINT users_pkey PRIMARY KEY (id)
)
我希望函数在将id和name值存储到表中后返回它们

下面的函数仅返回名称,即插入数据中的单个值:

CREATE OR REPLACE FUNCTION public.create_user(
    data json)
    RETURNS varchar
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
AS $BODY$
declare r_name varchar;
begin
    insert into users(id, name, age, gender, mobile, email, password, time)
select 
    (data->>'id')::int,
    data->>'name',
    (data->>'age')::int,
    data->>'gender',
    (data->>'mobile')::bigint,
    data->>'email',
    data->>'password',
    data->>'time'
    returning
        users.name into r_name;
    return r_name;
end
$BODY$;
以下是示例json:

{"id":"230720","name":"Deep Mandal","age":"24","gender":"male","mobile":"916296866621","email":"deepmandal8747@gmail.com","password":"$2a$10$b/H70deR75LC/Ij03O11RueaFTUJMyeelxH7c4F1MxB9LlmbSa28K","time":"2021-02-21T13:51:41.571Z"}
我想返回id和name,以便在我的nodejs应用程序中
console.log()


我知道我的返回语句在第一个函数中是完全错误的。所以任何建议都可以。

如果您希望返回的值大于此值,则应使用
返回表。您可以尝试以下功能:

CREATE OR REPLACE FUNCTION public.create_user(
    data json)
    RETURNS table(id_ int, name_ varchar)
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
AS $BODY$

begin
return query
    insert into users(id, name, age, gender, mobile, email, password, time)
select 
    (data->>'id')::int,
    data->>'name',
    (data->>'age')::int,
    data->>'gender',
    (data->>'mobile')::bigint,
    data->>'email',
    data->>'password',
    data->>'time'
    returning
    users.id,
        users.name;
end
$BODY$;


发布您的表架构/一些示例数据和所需的输出我已更新了这些详细信息。共享您尝试插入的示例JSON您需要返回一个
记录
(int,text)
元组,而不是
文本[]
。工作正常。你能告诉我更多关于id和名称命名的约定吗?另外,您如何深入了解postgresql。我的意思是这种语言太令人困惑了。你能给我介绍一些我可以学习的资源吗?