Как СОЗДАТЬ несколько ТИПОВ в одном L OOP в pl / pg sql? - PullRequest
0 голосов
/ 18 июня 2020

Я хочу создать много похожих друг на друга ТИПОВ, которые могут иметь разную длину, например

CREATE TYPE TP_A (
    internallength = 8,
    input = tp_a_in,
    output = tp_a_out,
    storage = plain,
    alignment = double
};

формат функций ввода и вывода одинаковый, и я хочу l oop имя типа («tp_a») и внутренняя длина (8) в моих массивах, например names={tp_a,tp_b,tp_c,tp_d}; lens={8,8,16,32}.

Как я мог это сделать? Могу я просто объявить имена в тексте [] и l oop на нем?

1 Ответ

0 голосов
/ 18 июня 2020

Вы можете попробовать адаптировать следующий код к операторам CREATE TYPE, которые вы используете:

do
$$
declare
 tn text[] = '{"tp_a", "tp_b"}';
 tl int[] = '{8, 16}';
begin
 for i in 1..2
 loop
 execute format('create type %I as (field%s int)', tn[i] , tl[i]);
 end loop;
end;
$$;

См. функцию FORMAT .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...