gpt4 book ai didi

postgresql - PostgreSQL : Composite types and select into

转载 作者:行者123 更新时间:2023-11-29 12:03:47 27 4
gpt4 key购买 nike

谁能解释一下? (一切都在下面的例子中!)。我使用 postgresql 9.4。警告!在下面的代码中,我删除了“对象类型”复合类型和“example_data”临时表,确保您的数据库中没有这些……以防万一,我注释掉了删除命令,如果需要则取消注释它们。 ..

--drop type if exists object_type;
--drop table if exists example_data;

create type object_type as (
id text
,value text);

create temporary table example_data as (
select
'id1'::text as id,
'example value'::text as value);

do $$
declare
my_object object_type;
begin

-- The fiolowing doesn't work, we can't use INTO with the whole object
-- Some how, it tries to put the whole object into the first attribute:
select (id,value)::object_type
into my_object
from example_data;

raise warning 'ID: %, VALUE: %', my_object.id, my_object.value;

-- What a shame! It would have been so much more convenient than the following:
-- to feed the object we need to repeat each one of the attribute in the INTO section:
select id, value
into my_object.id, my_object.value
from example_data;

raise warning 'ID: %, VALUE: %', my_object.id, my_object.value;

/*
In that example it is not so bad, but when you have very large object, it is very ugly to repeat each one
of the attribute, for example:
select (att1, att2, att3, att4, att5, att6, att7, att8, att9, att10)::object_type2 into my_object2

and, (very heavy):
select att1, att2, att3, att4, att5, att6, att7, att8, att9, att10
into my_object2.att1, my_object2.att2, my_object2.att3, my_object2.att4, my_object2.att5, my_object2.att6,
my_object2.att7, my_object2.att8, my_object2.att9, my_object2.att10

*/

end $$;

--drop type if exists object_type;
--drop table if exists example_data;

最佳答案

正在关注 the documentation:

...
select id, value
into my_object
from example_data;
...

关于postgresql - PostgreSQL : Composite types and select into,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39269046/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com