在postgresql函数的表中插入值后,如何返回集合、数组或任何插入值?
我只想返回一个数组或设置值(id和名称),这样在插入行后,我就可以在node.js应用程序中在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
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。我的意思是这种语言太令人困惑了。你能给我介绍一些我可以学习的资源吗?