我在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中执行此操作?
答案 0 :(得分:0)
pga中不存在AFAIK“table of”,但您可以使用临时表。您可以使用通常的INSERT / UPDATE / DELETE命令使用它们。另外%rowtype像往常一样对它们起作用。临时表仅存在,直到会话存在。
另外 - 你可能知道“dbms_output.put_line”是pg中的“提示注意”。
另外,要将其作为匿名块运行,请使用“DO $$ ...此处为您的代码... $$”