如何初始化行数据类型变量?

时间:2018-09-27 05:22:02

标签: postgresql plpgsql

我想创建一个函数来初始化和返回表的行数据类型为

CREATE FUNCTION get_default_table_row_object() 
RETURNS mytable AS $$
    DECLARE 
    row mytable;
    BEGIN
        row.field1 := 0;
        row.field2 := -1;
        row.record_reg_id := 1;
        row.record_upd_id := 1;
        row.record_reg_date := current_timestamp;
        row.record_upd_date := current_timestamp;

        RETURN row;
    END;
$$ LANGUAGE plpgsql;

因为我的表有很多列,所以我需要在多个函数中创建数十个变量。我想将上述功能用作

CREATE FUNCTION some_function() RETURNS VOID AS $$
DECLARE    
    i_obj1 mytable := get_default_table_row_object(); -- declare and initialize default values
BEGIN
    -- function body
END;
$$ LANGUAGE plpgsql;

但这给我错误ERROR: default value for row or record variable is not supported。有办法解决吗?

1 个答案:

答案 0 :(得分:2)

您可以将其设置在主体中,如下所示:

CREATE FUNCTION some_function() RETURNS VOID AS $$
DECLARE    
    i_obj1 mytable; -- declare only
BEGIN
    i_obj1 := get_default_table_row_object(); -- set default values
END;
$$ LANGUAGE plpgsql;