繁体   English   中英

如何使用数组在postgres中自动执行字段声明?

[英]How do I automate field declarations within postgres using an array?

我正在尝试在postgres数据库中创建一系列字段,这些字段在表中以相同的顺序使用相同的功能,并且想知道是否存在使用其他功能自动执行此操作的方法。

以下是我当前的sql的示例,我想做的是传递[10,20]的函数和数组,并使其输出相同的字段。

CREATE OR REPLACE FUNCTION f1(in1 integer, in2 integer) RETURNS integer AS '
SELECT CASE
    WHEN in1is NULL THEN 0
    WHEN in1 ~ ''^[0-9]+$'' = ''f'' THEN 0
    WHEN in1 = transtech_target THEN 1
    ELSE 0
END' LANGUAGE SQL;

CREATE OR REPLACE FUNCTION f2(in1 integer, in2 integer) RETURNS integer AS '
SELECT CASE
    WHEN in1 is NULL THEN 0
    ELSE 0
END' LANGUAGE SQL;

SELECT 
   f1(inf1, '10') AS f10,
   f2(inf2, '10') AS f10up,
   f2(inf3, '10') AS f10dn,
   f1(inf1, '20') AS f20,
   f2(inf2, '20') AS f20up,
   f2(inf3, '20') AS f20dn,
FROM table;

有什么想法或想法吗?

首先,您必须在计划时知道按列表示的结果。 因此,您无法真正实现进一步的自动化。 但是,根据PostgreSQL版本的不同,可能会有一些选项。 这些包括:

  1. 具有可变列数并返回JSON或HSTORE而不是元组的动态SQL。

  2. 具有可变列数和返回XML而不是元组的动态SQL。

  3. 具有可变列数并返回REFCURSOR的动态sql。 这将保留元组,但需要进行事务处理,并且需要单独的客户端FETCH命令。

  4. 直接SQL并返回可变行数而不是列数.....

但是,如果要返回变量号或列名,则无法在SQL中执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM