For example, you can create the value of SETOF INT type as shown below:
VALUES (1), (2), (3);
SELECT unnest(ARRAY[1,2,3]);
SELECT generate_series(1,3);
SELECT generate_subscripts(ARRAY['apple','orange','banana'], 1);
And, you can create the value of SETOF TEXT type as shown below:
VALUES ('John'), ('David'), ('Robert');
SELECT unnest(ARRAY['John','David','Robert']);
And, you can create the value of SETOF RECORD type as shown below:
VALUES ('John','Smith'), ('David','Miller');
SELECT unnest(ARRAY[ROW('John','Smith'),ROW('David','Miller')]);
And, you can create the value of SETOF INT[] type as shown below:
VALUES (ARRAY[1,2,3]), (ARRAY[4,5,6]);
And, you can create the value of SETOF TEXT[] type as shown below:
VALUES (ARRAY['John','David']), (ARRAY['Robert','Mark']);
*Memos:
The doc explains unnest().
The doc explains generate_series() and generate_subscripts().
You cannot create the value of SETOF RECORD[] type because SETOF RECORD[] type doesn't exist in PostgreSQL so if you use SETOF RECORD[] type, there is error. *RECORD[] itself doesn't exist in PostgreSQL so if you use RECORD[], there is the error.
My answer explains how to create the array of rows.
My answer explains how to create and use the 1D array with INT[] in detail.
My answer explains how to create and use the 1D(one-dimensional) array with VARCHAR[] in detail.