如何在PostgreSQL中创建表和用户定义的记录?

时间:2016-12-13 13:55:03

标签: sql postgresql plpgsql

我在Oracle中有以下表格

create table x(
  x_id           number,
  x_description  VARCHAR2(40),
  x_date         DATE
)

例如,x名称的PL / SQL表被建模为具有三列的数据库表,其分别存储数字和字符数据和日期。虽然您不能使用SQL语句来操作PL / SQL表,但是它的主键可以让您对行进行类似数组的访问。

declare
  type tab_x is table of x%rowtype;
  row  x%rowtype;
  list tab_x;
begin
  begin
    list.delete;
  exception
    when collection_is_null then
      list := tab_x();
  end;

  row.observacion := 'Jorge';
  row.numero      := '1';
  row.fch_ins     := sysdate;
  list.extend;
  list(list.last) := row;

  row.observacion := 'Andrea';
  row.numero      := '2';
  row.fch_ins     := sysdate;
  list.extend;
  list(list.last) := row;

  row.observacion := 'Jose';
  row.numero      := '3';
  row.fch_ins     := sysdate;
  list.extend;
  list(list.last) := row;

  row.observacion := 'Lucas';
  row.numero      := '4';
  row.fch_ins     := sysdate;
  list.extend;
  list(list.last) := row;

  for i in list.first .. list.last loop
    row := list(i); 
    dbms_output.put_line(row.x_id ||' - '|| row.x_description ||' - '|| row.x_date);
  end loop;

end;

输出:

1 - Jorge - 13/12/16

2 - 何塞 - 16/12/16

3 - Andrea - 13/12/16

4 - Lucas - 13/12/16

如何在PostgreSQL中执行此操作?

1 个答案:

答案 0 :(得分:0)

pga中不存在AFAIK“table of”,但您可以使用临时表。您可以使用通常的INSERT / UPDATE / DELETE命令使用它们。另外%rowtype像往常一样对它们起作用。临时表仅存在,直到会话存在。

另外 - 你可能知道“dbms_output.put_line”是pg中的“提示注意”。

另外,要将其作为匿名块运行,请使用“DO $$ ...此处为您的代码... $$”