JSON

Создадим собственный тип данных

CREATE TYPE p AS
(
    t TEXT,
    x INTEGER,
    y INTEGER,
    z INTEGER
);

Создадим таблицу для хранения информации

CREATE TABLE ppp
(
    t TEXT,
    x INTEGER,
    y INTEGER,
    z INTEGER
);

Заполним таблицу записями

INSERT INTO ppp (t,x,y,z) VALUES ('A', 1,2,3);
INSERT INTO ppp (t,x,y,z) VALUES ('B', 10,20,30);
INSERT INTO ppp (t,x,y,z) VALUES ('C', 100,200,300);
INSERT INTO ppp (t,x,y,z) VALUES ('D', 1000,2000,3000);

Выведем содержимое таблицы на экран

SELECT * FROM ppp ORDER BY t ASC;

Напишем функцию, которая возвращает содержимое таблицы в виде массива в формате JSON

CREATE OR REPLACE FUNCTION get_p_arr_json() RETURNS TEXT AS $$
    DECLARE arr p ARRAY;
    DECLARE element p;
    DECLARE n INTEGER;
    DECLARE s TEXT;
BEGIN
   s = '[]';
   n = 0;

   FOR element IN SELECT * FROM ppp ORDER BY t ASC LOOP
      n = n + 1;
      arr[n] = element;
   END LOOP;

   IF (array_length(arr, 1) > 0) THEN
      s = array_to_json(arr);
   END IF;

   RETURN s;
END;

$$ LANGUAGE plpgsql;

Вызываем написанную функцию

SELECT * FROM get_p_arr_json();

Last updated

Was this helpful?