MS-SQL에서 Oracle에 있는 Data에 접근하기 위한 방법으로 Openquery라는걸 소개한 적이 있죠.
기본적으로 제공하는 기능이라 좋긴 하지만 동적으로 쿼리를 만들어서 결과값을 받아올수 없다는 얘기를 한 적이 있습니다. 그렇게 되면 WHERE절 조건을 정확하게 줄 수 없으니 오라클 DB에 부하를 많이 주게 되겠죠.
저도 이렇게 알고 서비스 중인 MS-SQL과 Oracle 사이에 Data 동기화 프로시져를 만들었었습니다.
그런데....
웬걸...
회사에서 사용중인 MS-SQL 2005에서 혹시나 하는 마음에 문자열 변수에 커서를 정의하는 문장까지 포함해서 동적으로 쿼리를 만들어 주고, 커서를 열었더니... 결과 값이 정상적으로 나오네요. 앗싸~ 가오리~
아래와 같은 방식으로 처리하니까 동적으로 쿼리문장을 만들어서 실행시키고 결과값을 커서에 받아서 사용할 수 있습니다.
기본적으로 제공하는 기능이라 좋긴 하지만 동적으로 쿼리를 만들어서 결과값을 받아올수 없다는 얘기를 한 적이 있습니다. 그렇게 되면 WHERE절 조건을 정확하게 줄 수 없으니 오라클 DB에 부하를 많이 주게 되겠죠.
저도 이렇게 알고 서비스 중인 MS-SQL과 Oracle 사이에 Data 동기화 프로시져를 만들었었습니다.
그런데....
웬걸...
회사에서 사용중인 MS-SQL 2005에서 혹시나 하는 마음에 문자열 변수에 커서를 정의하는 문장까지 포함해서 동적으로 쿼리를 만들어 주고, 커서를 열었더니... 결과 값이 정상적으로 나오네요. 앗싸~ 가오리~
아래와 같은 방식으로 처리하니까 동적으로 쿼리문장을 만들어서 실행시키고 결과값을 커서에 받아서 사용할 수 있습니다.
DECLARE @QUERY_STRING VARCHAR(1000)
DECLARE @CODE VARCHAR(30)
SET @CODE='SUPERCODE'
DECLARE @USERNAME VARCHAR(50)
SET @QUERY_STRING = 'DECLARE ORA_CUR CURSOR FOR
SELECT USERNAME
FROM OPENQUERY(ORA_DB, ''SELECT USERNAME
FROM USER_INFO
WHERE CODE='''''+@CODE+''''' AND USER_FLAG=''''N'''' '') '
EXEC (@QUERY_STRING)
OPEN ORA_CUR
FETCH NEXT FROM ORA_CUR INTO @USERNAME
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO dbo.USER_INFO(USERNAME)
VALUES(@USERNAME)
DECLARE @CODE VARCHAR(30)
SET @CODE='SUPERCODE'
DECLARE @USERNAME VARCHAR(50)
SET @QUERY_STRING = 'DECLARE ORA_CUR CURSOR FOR
SELECT USERNAME
FROM OPENQUERY(ORA_DB, ''SELECT USERNAME
FROM USER_INFO
WHERE CODE='''''+@CODE+''''' AND USER_FLAG=''''N'''' '') '
EXEC (@QUERY_STRING)
OPEN ORA_CUR
FETCH NEXT FROM ORA_CUR INTO @USERNAME
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO dbo.USER_INFO(USERNAME)
VALUES(@USERNAME)
FETCH NEXT FROM ORA_CUR INTO @USERNAME
END;
CLOSE ORA_CUR
DEALLOCATE ORA_CUR
END;
CLOSE ORA_CUR
DEALLOCATE ORA_CUR
'IT 기술 > Database' 카테고리의 다른 글
Tibero4 migration 모험기 (3) Index rebuild 기능 (1) | 2010.02.01 |
---|---|
Tibero4 migration 모험기 (2) tbAdmin에 대해서 (0) | 2010.01.28 |
[이기종 DB간 Data 공유] MS-SQL에서 Oracle에 있는 Data 가져와서 동기화 맞추는 기능 구현 (0) | 2010.01.07 |
Tibero4 migration 모험기 (1) 사용자 정의 함수 사용시 경험한 묘한 버그 (0) | 2009.11.23 |
Orange for Tibero 2009를 실행시키기 위한 준비. (0) | 2009.09.22 |