오라클과 프로그램간에 배열을 어떻게 주고 받을 것이지
고민해 보신 분들이 계실 줄 압니다.
며칠간 시간이 나서 이리저리 찾아보니까..다음처럼 결과물이 나왔네요...
사실 몇 달 전부터 한 번 봐야 쓰겄다 했는데...이제사 조금 감을 잡았습니다.
실제적으로 프로젝트에 적용해본 적은 없고..테스트로 해 본 내용입니다.
필요한 상황에 맞게 응용을 해보시면 될 성 싶습니다.
제가 능력많아..떡하니 이렇게 작품을 내놓으면 좋겠지만......
애석하게도.. http://asktom.oracle.com/pls/ask/f?p=4950:1: 에서 자료참조를 했습니다.
1. Java Stored Procedure "ArrayDemo" 생성
create or replace
and compile java source named "ArrayDemo"
as
import java.io.*;
import java.sql.*;
import oracle.sql.*;
import oracle.jdbc.driver.*;
public class ArrayDemo
{
public static void passArray() throws SQLException
{
Connection conn = new OracleDriver().defaultConnection();
int intArray[] = { 1,2,3,4,5,6 };
ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor( "NUM_ARRAY",
conn);
ARRAY array_to_pass = new ARRAY( descriptor, conn, intArray );
OraclePreparedStatement ps =
(OraclePreparedStatement)conn.prepareStatement( "begin give_me_an_array
(:x); end;" );
ps.setARRAY( 1, array_to_pass );
ps.execute();
}
}
/
Java created.
2. 사용할 Array(or TYPE) 생성
create or replace type NUM_ARRAY as table of number;
/
Type created.
3. Array 출력시키는 Procedure 생성
create or replace procedure give_me_an_array( p_array in num_array )
as
begin
for i in 1 .. p_array.count
loop
dbms_output.put_line( p_array(i) );
end loop;
end;
/
Procedure created.
4. java source를 호출하는 Procedure 생성
create or replace procedure show_java_calling_plsql
as language java
name 'ArrayDemo.passArray()';
/
Procedure created.
5. Procedure "give_me_an_array"에서 출력하는 내용을 보기 위한 명령어
set serveroutput on
6. show_java_calling_plsql 실행
exec show_java_calling_plsql
결과>
1
2
3
4
5
6
고민해 보신 분들이 계실 줄 압니다.
며칠간 시간이 나서 이리저리 찾아보니까..다음처럼 결과물이 나왔네요...
사실 몇 달 전부터 한 번 봐야 쓰겄다 했는데...이제사 조금 감을 잡았습니다.
실제적으로 프로젝트에 적용해본 적은 없고..테스트로 해 본 내용입니다.
필요한 상황에 맞게 응용을 해보시면 될 성 싶습니다.
제가 능력많아..떡하니 이렇게 작품을 내놓으면 좋겠지만......
애석하게도.. http://asktom.oracle.com/pls/ask/f?p=4950:1: 에서 자료참조를 했습니다.
1. Java Stored Procedure "ArrayDemo" 생성
create or replace
and compile java source named "ArrayDemo"
as
import java.io.*;
import java.sql.*;
import oracle.sql.*;
import oracle.jdbc.driver.*;
public class ArrayDemo
{
public static void passArray() throws SQLException
{
Connection conn = new OracleDriver().defaultConnection();
int intArray[] = { 1,2,3,4,5,6 };
ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor( "NUM_ARRAY",
conn);
ARRAY array_to_pass = new ARRAY( descriptor, conn, intArray );
OraclePreparedStatement ps =
(OraclePreparedStatement)conn.prepareStatement( "begin give_me_an_array
(:x); end;" );
ps.setARRAY( 1, array_to_pass );
ps.execute();
}
}
/
Java created.
2. 사용할 Array(or TYPE) 생성
create or replace type NUM_ARRAY as table of number;
/
Type created.
3. Array 출력시키는 Procedure 생성
create or replace procedure give_me_an_array( p_array in num_array )
as
begin
for i in 1 .. p_array.count
loop
dbms_output.put_line( p_array(i) );
end loop;
end;
/
Procedure created.
4. java source를 호출하는 Procedure 생성
create or replace procedure show_java_calling_plsql
as language java
name 'ArrayDemo.passArray()';
/
Procedure created.
5. Procedure "give_me_an_array"에서 출력하는 내용을 보기 위한 명령어
set serveroutput on
6. show_java_calling_plsql 실행
exec show_java_calling_plsql
결과>
1
2
3
4
5
6
[이 게시물은 관리자님에 의해 2011-10-31 16:47:36 Oracle에서 이동 됨]
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 1130 | 18년 전 | 2474 | ||
| 1129 | 18년 전 | 2460 | ||
| 1128 | 18년 전 | 2327 | ||
| 1127 | 18년 전 | 2568 | ||
| 1126 |
|
18년 전 | 3870 | |
| 1125 | 18년 전 | 3663 | ||
| 1124 |
|
18년 전 | 2102 | |
| 1123 | 18년 전 | 2038 | ||
| 1122 | 18년 전 | 1584 | ||
| 1121 | 18년 전 | 3909 | ||
| 1120 | 18년 전 | 5899 | ||
| 1119 | 18년 전 | 6993 | ||
| 1118 | 18년 전 | 2477 | ||
| 1117 |
BEST79
|
18년 전 | 2735 | |
| 1116 | 18년 전 | 4188 | ||
| 1115 | 18년 전 | 2179 | ||
| 1114 |
|
18년 전 | 3638 | |
| 1113 | 18년 전 | 2889 | ||
| 1112 | 18년 전 | 2749 | ||
| 1111 | 18년 전 | 2201 | ||
| 1110 | 18년 전 | 2479 | ||
| 1109 | 18년 전 | 2623 | ||
| 1108 | 18년 전 | 3099 | ||
| 1107 | 18년 전 | 3739 | ||
| 1106 | 18년 전 | 3271 | ||
| 1105 | 18년 전 | 2787 | ||
| 1104 |
|
18년 전 | 2278 | |
| 1103 | 18년 전 | 2944 | ||
| 1102 | 18년 전 | 3027 | ||
| 1101 | 18년 전 | 2541 | ||
| 1100 | 18년 전 | 2298 | ||
| 1099 | 18년 전 | 3330 | ||
| 1098 | 18년 전 | 4857 | ||
| 1097 | 18년 전 | 5094 | ||
| 1096 | 18년 전 | 2312 | ||
| 1095 | 18년 전 | 2198 | ||
| 1094 | 18년 전 | 5008 | ||
| 1093 | 18년 전 | 8978 | ||
| 1092 | 18년 전 | 2048 | ||
| 1091 |
DeepnBlue
|
18년 전 | 4927 | |
| 1090 |
|
18년 전 | 4375 | |
| 1089 |
도날드주주
|
18년 전 | 2617 | |
| 1088 |
|
18년 전 | 4968 | |
| 1087 | 18년 전 | 2795 | ||
| 1086 | 18년 전 | 3678 | ||
| 1085 | 18년 전 | 2621 | ||
| 1084 | 18년 전 | 3439 | ||
| 1083 | 18년 전 | 1944 | ||
| 1082 | 18년 전 | 5381 | ||
| 1081 | 18년 전 | 1701 | ||
| 1080 | 18년 전 | 6061 | ||
| 1079 |
|
18년 전 | 2893 | |
| 1078 | 18년 전 | 6054 | ||
| 1077 |
|
18년 전 | 6848 | |
| 1076 | 18년 전 | 3730 | ||
| 1075 | 18년 전 | 2208 | ||
| 1074 |
hwatta
|
18년 전 | 2101 | |
| 1073 | 18년 전 | 6904 | ||
| 1072 | 18년 전 | 2407 | ||
| 1071 | 18년 전 | 3961 | ||
| 1070 |
|
18년 전 | 5349 | |
| 1069 | 18년 전 | 2700 | ||
| 1068 | 18년 전 | 1759 | ||
| 1067 | 18년 전 | 1594 | ||
| 1066 | 18년 전 | 1539 | ||
| 1065 | 18년 전 | 1821 | ||
| 1064 | 18년 전 | 1816 | ||
| 1063 | 18년 전 | 1786 | ||
| 1062 | 18년 전 | 1718 | ||
| 1061 | 18년 전 | 2515 | ||
| 1060 | 18년 전 | 2318 | ||
| 1059 | 18년 전 | 3467 | ||
| 1058 | 18년 전 | 2602 | ||
| 1057 | 18년 전 | 2577 | ||
| 1056 | 18년 전 | 3416 | ||
| 1055 | 18년 전 | 4631 | ||
| 1054 | 18년 전 | 2970 | ||
| 1053 | 18년 전 | 2823 | ||
| 1052 | 18년 전 | 3354 | ||
| 1051 | 18년 전 | 6281 | ||
| 1050 | 18년 전 | 2193 | ||
| 1049 | 18년 전 | 2004 | ||
| 1048 | 18년 전 | 1955 | ||
| 1047 | 18년 전 | 2014 | ||
| 1046 | 18년 전 | 3204 | ||
| 1045 | 18년 전 | 2264 | ||
| 1044 | 18년 전 | 1961 | ||
| 1043 | 18년 전 | 1626 | ||
| 1042 | 18년 전 | 2084 | ||
| 1041 | 18년 전 | 3368 | ||
| 1040 | 18년 전 | 3233 | ||
| 1039 | 18년 전 | 1924 | ||
| 1038 | 18년 전 | 1507 | ||
| 1037 | 18년 전 | 3203 | ||
| 1036 | 18년 전 | 2066 | ||
| 1035 | 18년 전 | 1616 | ||
| 1034 | 18년 전 | 2839 | ||
| 1033 | 18년 전 | 1975 | ||
| 1032 | 18년 전 | 1851 | ||
| 1031 | 18년 전 | 1823 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기