Как инициализировать переменные типа данных строки? - PullRequest
0 голосов
/ 27 сентября 2018

Я хотел бы создать функцию, которая инициализирует и возвращает тип данных строки таблицы как

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 голосов
/ 27 сентября 2018

Вместо этого вы можете установить его в теле, например:

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;
...