3

我有一个名为 tt 的复合类型,供我的所有 plpgsql 和 plpythonu 过程使用。有没有某种plpy。以一致的方式访问目录或模式以派生类型或可迭代结构以返回而不必在 plpythonu 过程中定义类的方法?

CREATE TYPE tt AS (id integer, name text);
CREATE OR REPLACE FUNCTION python_setof_type() RETURNS SETOF tt AS $$
#-- i want this to be dynamic or to have it's attributes pulled from the tt type
class tt:
    def __init__(self, id, name):
        plpy.info('constructed type')
        self.idx = 0
        self.id = id
        self.name = name

    def __iter__ (self):
        return self

    def next (self):
        if (self.idx == 1):
            raise StopIteration

        self.idx += 1
        return ( self )

return tt(3, 'somename')

#-- was hoping for something like
#-- give me 1 record
#-- return plpy.schema.tt(3, 'somename')

#-- give me 2 records
#-- return plpy.schema.tt([3, 'somename'], [1, 'someornothername'])

#-- give me a no records
#-- return plpy.schema.tt([])
$$ LANGUAGE plpythonu;
4

1 回答 1

1

没有任何内置的东西,但这是一个好主意。正如您所指出的,您可以通过查询系统目录自己编写它。

于 2012-10-31T16:14:58.797 回答