도움을 많이 받았는데 저도 도움을 드리려고 올립니다 ^^
Oracle 에서 Mssql을 odbc로 연결하여 DBlink를 활용 데이터 등록시
한글이 등록되지 않는 오류가 있다.
이때 Oracle에서 바이너리 값으로 변환후 => Mssql에서 형변환 하여 테이블에 한글 등록이 가능 하다.
(참 쉽죠잉~)
ex) 아래는 프로시저 예제..
CREATE OR REPLACE PROCEDURE PROC
(
ARG_NO IN VARCHAR2,
ARG_MSG IN VARCHAR2
)
AS PRAGMA AUTONOMOUS_TRANSACTION;
GETROW NUMBER;
LS_QUERY VARCHAR2(1000);
BEGIN
LS_QUERY := ' Insert into ms_table (id , no , msg ) '||
' Values '||
' (''id'','''||ARG_NO||''',CAST(0x'||UTL_RAW.CAST_TO_RAW(ARG_MSG)||' as varchar) ); ';
GETROW := DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@MSSQLLINK(LS_QUERY);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
설명 1. : UTL_RAW.CAST_TO_RAW('한글메세지') 은 한글메세지를 바이너리 값으로 변환하여 자료를 작성한다.
자세한 내용은 http://kr.forums.oracle.com/forums/thread.jspa?threadID=471882&tstart=201 참조 바람.
설명 2. : CAST(0x'||UTL_RAW.CAST_TO_RAW(ARG_MSG)||' as varchar) 이부분은 MSsql입력시 바이너리를 varchar로 cast해서 등록해야 하므로
예제처럼 작성한다. 작성시 0x를 앞에 붙여야 정확한 형변환이 일어나니 반드시 붙여 주길바란다.
MSsql 형변환 내용은 http://technet.microsoft.com/ko-kr/library/ms187928.aspx 참조 바람.
DBlink 추가 내용은 http://blog.naver.com/pumba3?Redirect=Log&logNo=10044261562 참조 하세요
성공하세요~ 아자~ |