小编Eyl*_*yla的帖子

pl/pgsql:从记录中动态获取列名

您好,我想从记录中动态获取列名。如下面的代码所示,我创建了一个游标,并使用循环通过将每一行提取到记录类型 r1 来处理该游标中的每条记录。在我的表中,我有这些列 [dlq_2000,dlq_2001,...,dlq_2017,dlq_2017]。我还在其顶部创建了一个循环来单独处理每一列。

我面临的问题是动态从 r1 获取字段名称,当我运行代码时收到此错误:

[Err] 错误:记录“r1”没有字段“'dlq_'||counter::text”上下文:SQL 语句“SELECT (r1."'dlq_'||counter::text" = 1 )”

请建议如何解决这个问题。

谢谢你,

CREATE OR REPLACE FUNCTION update()
   RETURNS VOID AS $$
DECLARE 
cur SCROLL CURSOR   FOR select * from my_tbl;
r1 RECORD;
begin
OPEN cur ;
FOR counter IN  2000..2017 LOOP
    r1 := NULL;
    LOOP
        FETCH cur INTO r1;
        EXIT WHEN NOT FOUND;

        IF (r1."'dl_'||counter::text" = 1 ) THEN
            -- do some thing
            RAISE NOTICE 'processing year of : %', counter;
        END IF;     
    END LOOP;
END …
Run Code Online (Sandbox Code Playgroud)

postgresql plpgsql postgresql-9.3

4
推荐指数
1
解决办法
5701
查看次数

标签 统计

plpgsql ×1

postgresql ×1

postgresql-9.3 ×1