postgresql - 如何在 pl/pgsql 的一个循环中创建多个类型?
问题描述
我想创建许多彼此相似的类型,它们可能具有不同的长度,例如
CREATE TYPE TP_A (
internallength = 8,
input = tp_a_in,
output = tp_a_out,
storage = plain,
alignment = double
};
输入和输出函数的格式相同,我想在我的数组中循环类型的名称(“tp_a”)和内部长度(8),例如names={tp_a,tp_b,tp_c,tp_d}; lens={8,8,16,32}
。
我怎么能这样做?我可以将名称声明为 text[] 并在其上循环吗?
解决方案
您可以尝试使以下代码适应您正在使用的 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 函数。
推荐阅读
- firebase - 实时数据库的 firebase 规则
- powershell - 管道安全组 Azure DevOps API
- azure-devops - 无法在 Azure Devops 中运行生成操作 XLiffResource
- google-sheets-api - 我有错误“'资源'的实例没有'电子表格'成员pylint(无成员)”
- python - 更改字典列表中的值
- sql - 基于两列的 GCP Big Query (SQL) 中的重复行
- python - Pandas:折叠 DataFrame 中的低值添加到新类别
- scala - 如何使用火花流从网站检索数据?
- bash - 按第 1 列分组并对第 2 列的唯一出现次数求和
- javascript - Javascript:等待已解决的承诺