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