언어/DB

[ORACLE JAVA] 오라클 JAVA 함수처럼 사용

누리몬 2015. 3. 10. 17:36

ORACLE JAVA


오라클에서 java 사용하기


-sha512 관련 함수를 db 에서도 사용하기 위해서 알아보니 oracle 에서 java 를 사용함. 예시는 sha512 용


+java 추가 

+ 함수추가 (java 를 부를수있는 함수 추가)

+ SQL 에서 함수를 불러서 사용 javaname.class name 으로 불러서 쓸수있음 .


--실행순서

1. CREATE_COMPILE_JAVA_SOURCE_SHA512.sql --위내용.

2. CREATE_FUNCTION_F_ENC_SHA512.sql


PLSQL


1. java class 생성 

 

create or replace and compile java source named SHA512 as

 

import java.security.MessageDigest;

 

public class SHA512 {

public static String encrypt(String tmpStr) throws Exception{

//SHA-512 적용

MessageDigest md = MessageDigest.getInstance("SHA-512");

 

    md.update(tmpStr.getBytes());

    byte[] msgb = md.digest();

 

    StringBuffer sb = new StringBuffer();

 

    for(int i = 0; i < msgb.length; i++){

byte temp = msgb[i];

String str = Integer.toHexString(temp & 0xFF);

while(str.length() < 2){

str = "0" + str;

}

str = str.substring(str.length() - 2);

 

      sb.append(str);

}

//--

return sb.toString();

}

}

# 자바클래스를 입력하고 실행하면 빌드가됨 리얼리?



2. class 를 이용할수 있도록 function  생성


create or replace FUNCTION F_ENC_SHA512

(

  P_STRING IN VARCHAR2 

) RETURN VARCHAR2 as language java name 'SHA512.encrypt(java.lang.String) return String';



# java 를 바로 sql 문에 사용할수 없기 때문에. function 안에다가 java 문을 사용하여 function 실행하여 java 를 사용한다.


3.  sql 문으로 실행.

select F_ENC_SHA512('123')  from dual ;



# 123 에 sha512 함수를 거친 값이 나오게됨 짜잔