2009-02-04 4 views
1

특정 환경에서 프로 시저의 테이블 (또는 뷰) A에 대한 모든 참조가 실제로 테이블 (또는 뷰) B를 사용한다는 SQL 환경에서 요구 사항이 있습니다. iSeries에서 OVRDBF 명령을 사용하여 테이블 B가있는 테이블 A : OVRDBF FILE (A) TOFILE (B). SQL에서 이와 동등한 것은 무엇입니까? 하나 있습니까?SQL에 iSeries OVRDBF 명령과 동등한 명령이 있습니까?

내 목표는 무시 무시한 절차로 끝나는 것입니다. 특정 조건이 충족 될 때 테이블 B의 처리를 지시하는 프로 시저 내에 조건부 논리가 필요하지 않습니다. 비전 : 일반적인 상황에서

: 그냥 특정 다른 상황에서 절차

를 호출 다음 OVRDBF 동등한를 수행하고 다음 절차를 어떤 옵션을 어떤 SQL 환경 지원

답변

1

확실하지 호출 :

을 DB2에는 CREATE ALIAS 문이 있다고 생각합니다. 별명을 통해 SQL을 작성하십시오.

다른 가능성 : 뷰를 통해 쿼리를 실행하십시오. OVRDBF를 수행 할 위치에서 뷰를 삭제하고 원하는 테이블로 다시 작성하십시오.

+1

이 답변에 대해 내가 싫어하는 유일한 점은 두 옵션 모두 모든 사람에 대한 참조를 일시적으로 무시하는 것입니다. '정상적인'객체에 대해 다른 프로세스가 작동하기를 원한다고 가정하면 아마도 추가 스키마 또는 이와 유사한 것이 적절할 것입니다. – JBell6

1

당신이 당신의 절차를 수정할 수 있다면 에드 언급으로 : 대신 A.의 XYZ를 참조하는 절차를 수정

1) 파일에 대한 별칭을 만듭니다 (A)

CREATE ALIAS XYZ FOR A 

2)

사용하는 프로 시저를 실행하면

3) 파일 B는

DROP ALIAS XYZ; 
CREATE ALIAS XYZ FOR B; 
CALL PROCEDURE; 
DROP ALIAS XYZ; 
CREATE ALIAS XYZ FOR A; 

을 실행하면 당신은 개월 수 없습니다 절차를 어렵게하고 테이블 A에 동시에 액세스하는 것에 대해 걱정하지 않아도됩니다.

RENAME TABLE A TO C; 
CREATE ALIAS A FOR B; 
CALL PROCEDURE; 
DROP ALIAS A; 
RENAME TABLE C TO A; 
+0

에드 내 의견에 별칭을 사용할 때 모든 사용자와 프로세스에 영향을 미칠 염려가 있음을 표명했습니다. 별칭이 현재 가리키는 것이 무엇이든간에 모든 것을 가리 키지 않는가? 단일 사용자 및/또는 프로세스에보다 구체적인 접근 방식을 만들 수 있습니까? – JBell6

관련 문제