OPENQUERY
※ 주의사항
OPENQUERY로 전달하는 쿼리는 연결된 서버의 쿼리 문법이어야 합니다. (ex. MS의 T-SQL을 Oracle DB에서 사용할 수 없음)
MSSQL 에서의 빈 문자열(
''
)은 오라클에서NULL
과 같습니다.
FROM OPENQUERY
SELECT
SELECT [컬럼명] FROM OPENQUERY([연결된 서버별칭], 'SELECT [컬럼명] FROM [테이블]')
--ex 1)
SELECT * FROM OPENQUERY(ORCL, 'SELECT * FROM BA030T')
--ex 2)
SELECT * FROM OPENQUERY(ORCL, 'SELECT itemcd, itemnm FROM BA030T WHERE useyn = ''Y''')
SELECT : 외부 변수 처리 예시
DECLARE @v_useyn varchar(1) = 'Y'
DECLARE @v_query nvarchar(1000) = '
SELECT * FROM OPENQUERY(ORCL, ''SELECT itemcd, itemnm FROM BA030T WHERE useyn = ''''' + @v_useyn + ''''''')'
PRINT @v_query
EXEC (@v_query)
DELETE
DELETE FROM OPENQUERY([연결된 서버별칭], 'SELECT [컬럼명] FROM [테이블]')
--ex)
DELETE FROM OPENQUERY(ORCL, 'SELECT * FROM BA030T WHERE itemcd = ''100-17-011''')
INSERT INTO (연결된 서버 → MSSQL)
INSERT INTO [테이블명]
SELECT [컬럼명] FROM OPENQUERY ([연결된 서버별칭], 'SELECT [컬럼명] FROM [테이블명]')
--ex)
INSERT INTO BA030T
( itemcd, itemnm, itemacnt, insiz, spec )
SELECT * FROM OPENQUERY(ORCL, '
SELECT itemcd, itemnm, itemacnt, insiz, spec
FROM BA030T
WHERE itemcd = ''#361-UC-106-4-01''')
INSERT INTO OPENQUERY
INSERT INTO (MSSQL → 연결된 서버)
INSERT INTO OPENQUERY ([연결된 서버별칭], 'SELECT [컬럼명] FROM [테이블명]')
SELECT [컬럼명] FROM [테이블명];
--ex 1)
INSERT INTO OPENQUERY (ORCL, 'SELECT * FROM BA030T')
SELECT * FROM BA030T WHERE itemcd <> ''
--ex 2)
INSERT INTO OPENQUERY (ORCL, 'SELECT itemcd, itemnm FROM BA030T')
SELECT itemcd, itemnm FROM BA030T WHERE itemcd = '100-17-011'
UPDATE OPENQUERY
UPDATE
UPDATE OPENQUERY([연결된 서버별칭], 'SELECT [컬럼명] FROM [테이블]') SET [컬럼명] = [값]
--ex)
UPDATE OPENQUERY(ORCL, 'SELECT *
FROM BA030T
WHERE itemcd = ''100-17-011''') SET
BNATUR = 'A10',
SETBNATUR = 'B20'
Execute Procedure
linked server to oracle
DECLARE @p_itemcd varchar(100) = '#361-UC-106-01',
@p_itemnm varchar(100) = 'A',
@p_result_code varchar(100) = '',
@p_result_msg varchar(100) = '';
EXECUTE ('BEGIN P_ORACLE_TEST(?, ?, ?, ?); END;', @p_itemcd, @p_itemnm, @p_result_code OUTPUT, @p_result_msg OUTPUT) AT ORCL;
SELECT @p_result_code, @p_result_msg
Difference
ORACLE ↔ MS SQL
Oracle
MS SQL
||
+
FROM DUAL
FROM절 삭제
LENGTH
LEN
MOD
%
SYSDATE
GETDATE()
NVL(a, b)
ISNULL(a, b)
TO_CHAR(날짜, 'YYYY-MM-DD')
CONVERT(VARCHAR(10), 날짜, 120)
TO_DATE(문자열)
CONVERT(DATETIME, 문자열)
ETC
Oracle SQL Developer 다운로드 (필요 시)

Last updated