Dynamically change column names in query in PostgreSQL
I've changed v_id from numeric to int, because in your sample data id is integer.
Them IMHO you don't need to use USING, you can simply format your sentence and execute it.
Finally you should escape single quotes around last 0.
CREATE OR REPLACE FUNCTION return_at_query(p_column text)
 RETURNS TABLE(at_id character varying, v_id int)
 LANGUAGE plpgsql
AS $function$
declare 
    ret text;  
begin
       RETURN QUERY EXECUTE
       FORMAT('SELECT %s, id FROM tab1 WHERE %s &lt;&gt; ''0''', p_column, p_column);
end;
$function$;



select return_at_query('at_11')


| return_at_query |
| :-------------- |
| (High,3)        |


db&lt;&gt;fiddle here