http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_encode.htm#i996731
SELECT utl_encode.text_encode('구루비', 'UTF8', 1) FROM DUAL; SELECT utl_encode.text_decode('6rWs66Oo67mE', 'UTF8', 1) FROM DUAL;
BASE64_ENCODE는 RAW 타입 파라미터를 받으므로 UTL_RAW.CAST_TO_RAW를 중간에 써야 하며, 출력 또한 RAW(HEX) 형태가 나오므로 다시 UTL_RAW.CAST_TO_VARCHAR2 로 바꿔줘야 합니다.
SELECT utl_encode.base64_encode(utl_raw.cast_to_raw('구루비')) result_raw, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('구루비'))) result_varchar2 FROM DUAL;
==> 36 72 57 73 36 36 4F 6F 36 37 6D 45 ; 6rWs66Oo67mE
utl_encode.text_encode 3번째 파라미터의 경우, UTL_ENCODE
.BASE64 상수값을 넣어야 하나,
PL/SQL 이 아니면 에러가 나는 문제로 실제 값인
1을 임의로 넣어준 것 입니다. 이는 가리키는 값이 나중에 바뀌는 경우 문제가 될 수 있겠네요.