1
직원이 배관공 인 경우 batch_id를 "P-1000"으로 설정하도록 직원 데이터베이스를 업데이트하고 싶습니다.PL/SQL에서 배열을 사용하여 여러 테이블 업데이트
대신 (5) 별도의 (느린) 쿼리를 만드는, 내가 원하는 :
- 배열의 각 인덱스는 테이블 이름을 설정 배열
- 업데이트를 사용하여 테이블을 통해
- 루프 문자열 인덱스의 문자열 값
내가 제안한 개념과 같이 멀리 떨어져 있어도 내가 틀린 나무를 완전히 짖고 있다고 생각하게 만듭니다.
아무 것도 적지 만, 여기에 내가하려고하는 허위 코드가 있습니다.
declare
type array_type is table of varchar2(100) index by binary_integer;
dmt_tables array_type;
begin
--fill dm_employeeTables array
dm_employeeTables(0) := 'dm_address';
dm_employeeTables(1) := 'dm_communications';
dm_employeeTables(2) := 'dm_identifier';
dm_employeeTables(3) := 'dm_name';
dm_employeeTables(4) := 'dm_qualifications';
-- loop through tables
for i in dm_employeeTables.FIRST .. dmt_tables.LAST
loop
update dm_employeeTables(i) a
set employee_batch_id = 'P-1000'
where a.employee_type = 'PLUMBER';
i=i+1;
end loop;
end;
배열을 통해 루핑하는 것이이 경우 5 개의 개별 쿼리에 대한 이점을주지 않는다고 생각합니다 (물론 컴파일 타임에 테이블을 알지 못한다면). 그렇습니까? –
@beherenow - 아마도 5 개의 테이블 만 있으면 실행하려는 UPDATE 문은 비교적 간단합니다. 이 경우, 코드를 반복하지 않는 이점은 동적 SQL 사용의 추가 복잡성보다 더 중요합니다. –
고마워요. 나는 동적 SQL에 대해 들어 본 적없는 동적 SQL에 반대하는 idividual 문을 고수 할 것입니다. 그것은 비록 편리 할 수있는 것처럼 들린다. – Nimbocrux