스키마 A의 일부 데이터를 스키마 B에로드하는 PL/SQL 프로 시저를 작성 중입니다.이 스키마는 모두 매우 다른 스키마이므로 스키마 B의 구조를 변경할 수 없습니다.테이블 열을 키 값 쌍으로 변환
스키마 A의 다양한 테이블에있는 열 (뷰에서 함께 조인 됨)은 테이블의 두 열에 key => value 쌍으로 각각 별도의 행에 스키마 B에 삽입해야합니다. 예를 들어, 직원의 이름은 스키마 A의 employee.firstname로 존재할 수 있지만, 같은 스키마 B에 입력 할 필요가 :
id=>1, key=>'A123', value=>'Smith'
거의 100 키를 추가 할 더의 가능성이 있습니다 앞으로는. 즉,이 키들을 하드 코드하고 싶지는 않습니다.
샘플 코드 :
create table schema_a_employees (
emp_id number(8,0),
firstname varchar2(50),
surname varchar2(50)
);
insert into schema_a_employees values (1, 'James', 'Smith');
insert into schema_a_employees values (2, 'Fred', 'Jones');
create table schema_b_values (
emp_id number(8,0),
the_key varchar2(5),
the_value varchar2(200)
);
내가 가장 가능성이 조회 테이블을 포함 할 우아한 솔루션은 각각의 키를 삽입 할 값을 결정하기 위해 생각과 같은 유사한 문 효율적으로 하드 코딩 수십 포함되지 않습니다 .. .. 내가 할 수 있도록하고 싶습니다 무엇
insert into schema_b_values (1, 'A123', v_firstname);
insert into schema_b_values (1, 'B123', v_surname);
은의 열 이름을 제공하는 칼럼과 함께, 스키마 B에서 모든 키를 나열 스키마 A의 로컬 조회 테이블을 가지고있다 예를 들어 스키마 A의 표를 채워야합니다. 스키마 B의 키 "A123"은 스키마 A의 "firstname"열의 값으로 채워 져야합니다.
create table schema_a_lookup (
the_key varchar2(5),
the_local_field_name varchar2(50)
);
insert into schema_a_lookup values ('A123', 'firstname');
insert into schema_a_lookup values ('B123', 'surname');
그러나 어떻게 동적으로 조회 테이블의 값을 사용하여 Oracle에 사용할 열을 사용할 수 있는지 잘 모르겠습니다.
제 질문은 모든 가능한 키 (예 : A123, B123 등)를 하드 코딩하지 않고 schema_a_employees의 데이터로 schema_b_values 테이블을 채우는 우아한 솔루션입니까?
건배.
+! 셋업 진술서를 증명하기 위해. 이로 인해 솔루션 테스트가 훨씬 쉬워졌습니다. – APC