Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Postresql:组合类型并选择到_Postgresql_Postgresql 9.4_Composite Types - Fatal编程技术网

Postgresql Postresql:组合类型并选择到

Postgresql Postresql:组合类型并选择到,postgresql,postgresql-9.4,composite-types,Postgresql,Postgresql 9.4,Composite Types,有人能解释一下吗?(所有内容都在下面的示例中!)。我使用postgresql 9.4。 警告在下面的代码中,我删除了“object type”复合类型和“example_data”临时表,请确保数据库中没有这些表。。。以防万一,我对drop命令进行了注释,如果需要,取消注释它们 --drop type if exists object_type; --drop table if exists example_data; create type object_type as ( i

有人能解释一下吗?(所有内容都在下面的示例中!)。我使用postgresql 9.4。 警告在下面的代码中,我删除了“object type”复合类型和“example_data”临时表,请确保数据库中没有这些表。。。以防万一,我对drop命令进行了注释,如果需要,取消注释它们

--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;
跟随

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