2017-03-12 4 views
1

아래의 블록 가정 : v_record.v_column_name :PostgreSQL을 동적 커서 (기록이로 실행을 위해), 필드 액세스

do $$ 
declare 
v_table_name text:='table_name'; 
v_column_name text:='column_name'; 
v_record record; 
v_sql_dynamic text; 
v_enum_xml xml; 
v_string text; 
begin 
    v_sql_dynamic:=format('select %s from %s',v_column_name,v_table_name); 
    FOR v_record IN EXECUTE v_sql_dynamic 
    LOOP 
    raise notice 'field with name % has a value of %',v_column_name,***?????***; 
    END LOOP; 
end; 
$$ language plpgsql 

가 어떻게 같은 방법으로 v_record의 분야에 대한 액세스 권한을 얻을 수 있습니까를?

+1

'to_jsonb (v_record) - >> – Abelisto

+0

깨갱 v_column_name', 그것을 작동합니다. 감사 –

답변

0

See Abelisto's comment. 어쨌든 text으로 값을 변환하는 동안 to_json()은 충분히 빠르고 약간 빠릅니다.

DO 
$$ 
DECLARE 
    v_table_name text := 'table_name'; 
    v_column_name text := 'column_name'; 
    v_sql_dynamic text := format('select %s from %s', v_column_name, v_table_name); 
    v_record  record; 
BEGIN 
    FOR v_record IN EXECUTE v_sql_dynamic 
    LOOP 
     RAISE NOTICE 'field named % has value %.' 
    , v_column_name, to_json(v_record) ->> v_column_name; 
    END LOOP; 
END 
$$ LANGUAGE plpgsql;

관련 :