승용이가 오라클 프로시저, 함수 공부하면서 오라클의 substr()함수와 같은 기능을 하는 함수를 기존 함수를 사용하지 않고 만드는 방법을 물어본건데...다른 방법으로는 죽어도 모르겠고(혹시 아시는 분 여기에 좀 올려주세요)...오라클에서 자바로 구현이 가능(자바말고. pro c등 기타언어로도 가능하지만..우리가 자바개발자인고로..)하기에 이렇게 만드는 방법을 올립니다. 개발시 참고바랍니다.
Java Stored Procedures or Functions
오라클에서 사용자 정의 함수나 프로시저를 만드는 것은 우리같은 자바 개발자에겐 조금 짜증나는 작업이다. 만약, 자바로 함수를 간단하게 만들 수 있다면...당근 가능하다...^^...
비즈니스단이나 뷰어단에서 해야할 일을 DB단이 처리함으로써 응용프로그램이나 미들웨어에 작업하는 것보다 빠른 속도를 얻으면서 간단하고 쉽게 제작 사용할 수 있을 것이다.
자바를 이용한 오라클 함수를 만드는 방법을 예제와 함께 정리했으니 따라하며 이해하시길...
예제) 오라클의 substr()함수과 같은 자바클래스를 이용한 사용자 정의 함수 작성 방법
1. Java 클래스 제작(Writing the Java Classes)
데이터베이스의 테이블들을 생성한 후, 어떠한 기능(메서드)들이 구현되어져야 하는지
생각하고 기능들을 메서드로서 구현한다.
import java.sql.*;
import java.io.*;
public class SubStr_ex
{
public static String cutString(String str_in, int start_no, int cut_no)
{
cut_no = start_no + cut_no - 1;
char[] tmp = str_in.toCharArray();
String out_str = "";
if(cut_no>str_in.length()) cut_no = str_in.length();
for(int i=1;i<=str_in.length();i++){
if(i>= start_no && i <= cut_no){
out_str = out_str+tmp[i-1];
}
}
return out_str;
}
}
2. 자바클래스 오라클에 올리기(Loading the Java Classes)
자바클래스를 작성한 후 loadjava라는 오라클의 유틸리티를 이용하여 cmd창에서 다음과 같이
올려준다
D:\>loadjava -u scott/tiger@127.0.0.1:1521:ora -v -r -t SubStr_ex.java
arguments: '-u' 'scott/tiger@127.0.0.1:1521:ora' '-v' '-r' '-t' 'SubStr_ex.java'
creating : source SubStr_ex
loading : source SubStr_ex
resolving: source SubStr_ex
<옵션>
-v : verbose모드 옵션
-r : 컴파일하고 클래스안에 외부참조를 포함한다는 옵션
-t : 클라이언트 측 JDBC Thin 드라이버를 이용해서 데이터베이스에 연결한다는 옵션
3. load된 자바클래스를 이용한 오라클 함수 만들기(Publishing the Java Classes)
자바클래스를 올렸으면 이제 오라클 함수를 만들어 사용하자
sqlplus창에서 아래와 같이 실행하자
CREATE OR REPLACE FUNCTION SubStr_ex(str_in VARCHAR2, sn NUMBER, en NUMBER)
RETURN VARCHAR2
AS
LANGUAGE JAVA
NAME 'SubStr_ex.cutString(java.lang.String, int, int) return java.lang.String';
/
그러면 substr_ex()라는 사용자 함수가 생성되어져 있을 것이다.
4. 이제부터는 맘대로 사용....(Calling the Java Stored Procedures or Functions)
SQL> select substr_ex('asdfghhj',3,2) from dual;
SUBSTR_EX('ASDFGHHJ',3,2)
-------------------------------------------------------------------------------
df
더 많은 정보는
http://download-west.oracle.com/docs/cd/B19306_01/java.102/b14187/cheight.htm#CHDCCHID
이곳을 참고 바랍니다.
그리고..오라클과 자바...타입 매핑
Table 6-1 Legal Data Type Mappings
SQL Type | Java Class |
---|---|
CHAR , LONG , VARCHAR2 |
oracle.sql.CHAR
|
DATE |
oracle.sql.DATE
|
NUMBER |
oracle.sql.NUMBER
|
OPAQUE |
oracle.sql.OPAQUE |
RAW , LONG RAW |
oracle.sql.RAW
|
ROWID |
oracle.sql.CHAR
|
BFILE |
oracle.sql.BFILE |
BLOB |
oracle.sql.BLOB
|
CLOB , NCLOB |
oracle.sql.CLOB
|
OBJECT
Object types |
oracle.sql.STRUCT
|
REF
Reference types |
oracle.sql.REF
|
TABLE , VARRAY
Nested table types and |
oracle.sql.ARRAY
|
any of the preceding SQL types | oracle.sql.CustomDatum
|
2006.4.27 / 무찬아빠(naeodud@nate.com)
자바스크립트 : str = encodeURIComponent(str)
asp : str = Server.URLEncode(Request.form("srchstr"))
나쁜 음식
커피, 홍차, 녹차 (식후 1시간내), 현미
권장 식품
난황, 육류, 생선, 우유, 콩
간, 난황, 녹황색채소, 다시마, 완두콩,
강낭콩, 미역, 깨, 우유, 조개류, 멸치,
뱅어포,말린 과일(살구,복숭아,건포도 등)
비타민 B12
간, 굴, 정어리, 분유, 난황
엽산
간, 시금치, 정어리, 땅콩, 연어
비타민 C
신선한 채소, 과일(감귤류, 딸기, 키위 등)
구분 |
역할 |
영양소 |
함유식품 |
권장식품 |
혈색소 생성 |
철 |
간, 굴, 계란 노른자, 살코기 |
단백질 |
고기, 생선, 달걀, 콩, 두부, 두유, 치즈 | ||
조혈촉진 |
비타민B12 |
간, 굴, 정어리, 분유, 계란 노른자 | |
엽산 |
간, 소맥배아, 시금치, 땅콩, 연어 | ||
비타민 C |
귤, 레몬, 토마토, 딸기, 피망, 풋고추, 케일, 갓, 시금치, 근대, 연근, 무청, 감자 | ||
제한식품 |
커피, 녹차, 홍차(식후 1시간 내) |
빈혈을 예방할 수 있는 식품
피를 만드는 데 필요한 동물성 단백질, 철분, 구리, 엽산 등을 충분히 섭취해야 한다. 그 중 빈혈은 철분 결핍으로 인한 경우가 많으므로 철분 섭취에 신경 쓴다. 철분은 동물의 간, 살코기, 미역, 달걀, 콩, 녹색채소에 많이 들어 있다.
달걀
특히 노른자에는 철분과 비타민이 풍부하여 빈혈에 좋다. 그러나 콜레스테롤이 많아 지나치게 먹는 것은 좋지 않다.
시금치
미네랄이 풍부하고 비타민 종류가 골고루 들어 있어 철분의 체내 흡수율을 돕는다.
쇠고기
철분은 일반적으로 동물성식품에 많이 들어 있고 체내 흡수율도 높다. 먹을 땐 채소를 꼭 곁들여 부족한 비타민을 보충한다.
쇠간
특히 악성빈혈에 효과적일 만큼 미네랄이 풍부하다. 간 특유의 냄새는 우유에 잠시 담가두면 없앨 수 있다.
대추
주성분은 탄수화물이지만 철분과 칼슘이 풍부하게 들어 있다. 달여서 물처럼 마시면 손쉽게 효과를 볼 수 있다.
선짓국은 다량의 철분을 포함하고 있어 빈혈에 좋다.
선짓국에는 흡수되기 쉬운 철분이 많을 뿐 아니라 단백질이 많다.
일반적으로 철분은 비타민 C가 풍부한 식품과 함께 먹으면 흡수율이 향상되며 현미나 녹차, 콜라, 감 등과 같이 먹으면 흡수에 방해가 된다.
특히 차와 감에 들어있는 탄닌 성문은 철분과 만나 흡수되지 못하는 '탄닌산철'을 만들기 때문에 피하는 것이 좋다. 또 선지는 중금속을 흡착하는 성질도 있어 요즘같이 황사가 심한 시기에 좋은 음식이다. http://jeil.wooris.net/jin-4.htm