У меня есть следующие таблицы в OracleКак создать таблицы и пользовательские записи в PostgreSQL?
create table x(
x_id number,
x_description VARCHAR2(40),
x_date DATE
)
Например, 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 - Хорхе - 13/12/16
2 - Хосе - 13/12/16
3 - Андреа - 13/12/16
4 - Lucas - 13/12/16
Как это сделать в PostgreSQL?
Или, вы можете использовать 'ВОЗВРАТ SETOF x' (или даже более явным/пользовательские 'RETURNS TABLE'), и вы можете избежать временных таблиц с помощью [' RETURN NEXT'/'RETURN QUERY'] (https://www.postgresql.org/docs/9.6/static/plpgsql-control-structures.html#AEN65553) – pozs