aditya desai schrieb am 24.11.2021 um 08:31: > H Michael, > Please see insert_info function below. Also r_log_message is composite data type and it's definition is also given below. > > CREATE OR REPLACE FUNCTION insert_info( > info_array r_log_message[] > ) RETURNS varchar AS $$ > DECLARE > info_element r_log_message; > BEGIN > FOREACH info_element IN ARRAY info_array > LOOP > INSERT INTO testaditya( > columname, > oldvalue, > newvalue > ) VALUES( > info_element.column_name, > info_element.oldvalue, > info_element.newvalue > ); > END LOOP; > RETURN 'OK'; > END; > $$ LANGUAGE plpgsql; You don't need a loop for that. This can be done more efficiently using unnest() INSERT INTO testaditya(columname,oldvalue,newvalue) select u.* from unnest(info_array) as u;