Postgresql中的自定义类型+数组(FOREACH) - 通过组合两者来选择数据

时间:2017-01-23 11:06:58

标签: postgresql postgresql-9.5

CREATE TYPE personobj AS
(
first_name character varying(50),
last_name character varying(50),
date_of_birth timestamp without time zone(0)
);

 CREATE TABLE people
(
id numeric(10) NOT NULL,
person "personobj"
);

我已将数据插入表格" People"。现在我想从" Person"中选择行。柱。

表格中的数据如下所示

  id | Person
   1 | ('foo','bar','16-APR-1990')
   2 | ('xyz','mno','16-APR-1991')

我想使用以下程序打印所有Person.LAST_NAME值。

DO $$
DECLARE
  I INT[];
  J PERSONOBJ[];
BEGIN
  SELECT INTO J FROM PEOPLE; -- how do I insert data here, so that I can    loop
 FOREACH I SLICE 1 IN ARRAY J
 LOOP
 RAISE NOTICE '%', J[I].ID;
END LOOP;
END;
$$ LANGUAGE 'plpgsql';

ERROR:  FOREACH expression must not be null
CONTEXT:  PL/pgSQL function inline_code_block line 7 at FOREACH over array

我尝试将NUMERIC和TYPE结合起来并将其作为数组发送,然后使用FOREACH显示数据。我可以知道我在哪里做错了。提前谢谢。

0 个答案:

没有答案