오라클과 프로그램간에 배열을 어떻게 주고 받을 것이지
고민해 보신 분들이 계실 줄 압니다.
며칠간 시간이 나서 이리저리 찾아보니까..다음처럼 결과물이 나왔네요...
사실 몇 달 전부터 한 번 봐야 쓰겄다 했는데...이제사 조금 감을 잡았습니다.
실제적으로 프로젝트에 적용해본 적은 없고..테스트로 해 본 내용입니다.
필요한 상황에 맞게 응용을 해보시면 될 성 싶습니다.
제가 능력많아..떡하니 이렇게 작품을 내놓으면 좋겠지만......
애석하게도.. 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에서 이동 됨]
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 1730 | 17년 전 | 1182 | ||
| 1729 | 17년 전 | 1613 | ||
| 1728 | 17년 전 | 1678 | ||
| 1727 | 17년 전 | 1817 | ||
| 1726 | 17년 전 | 2953 | ||
| 1725 | 17년 전 | 2092 | ||
| 1724 |
|
17년 전 | 1770 | |
| 1723 |
끝없는사랑
|
17년 전 | 2113 | |
| 1722 |
끝없는사랑
|
17년 전 | 1821 | |
| 1721 | 17년 전 | 3349 | ||
| 1720 | 17년 전 | 1532 | ||
| 1719 | 17년 전 | 1649 | ||
| 1718 |
사랑합니다
|
17년 전 | 1368 | |
| 1717 | 17년 전 | 2188 | ||
| 1716 | 17년 전 | 3141 | ||
| 1715 |
|
17년 전 | 2275 | |
| 1714 |
|
17년 전 | 1734 | |
| 1713 | 17년 전 | 2992 | ||
| 1712 | 17년 전 | 4425 | ||
| 1711 | 17년 전 | 1738 | ||
| 1710 | 17년 전 | 3241 | ||
| 1709 |
jeans
|
17년 전 | 1566 | |
| 1708 |
|
17년 전 | 3476 | |
| 1707 | 17년 전 | 5841 | ||
| 1706 |
|
17년 전 | 1420 | |
| 1705 |
|
17년 전 | 2158 | |
| 1704 | 17년 전 | 1792 | ||
| 1703 |
심심맨닷컴
|
17년 전 | 1552 | |
| 1702 | 17년 전 | 2425 | ||
| 1701 |
|
17년 전 | 2628 | |
| 1700 | 17년 전 | 1600 | ||
| 1699 | 17년 전 | 2682 | ||
| 1698 |
RedRiverFisher
|
17년 전 | 3170 | |
| 1697 |
심심맨닷컴
|
17년 전 | 1528 | |
| 1696 |
eclub
|
17년 전 | 1940 | |
| 1695 | 17년 전 | 3849 | ||
| 1694 |
깜장고무신
|
17년 전 | 4478 | |
| 1693 |
stuartkim
|
17년 전 | 1883 | |
| 1692 |
stuartkim
|
17년 전 | 1751 | |
| 1691 |
|
17년 전 | 2678 | |
| 1690 | 17년 전 | 1845 | ||
| 1689 | 17년 전 | 3933 | ||
| 1688 | 17년 전 | 1656 | ||
| 1687 | 16년 전 | 1930 | ||
| 1686 |
|
17년 전 | 2258 | |
| 1685 | 17년 전 | 2107 | ||
| 1684 |
|
17년 전 | 3572 | |
| 1683 |
leeLook
|
17년 전 | 1592 | |
| 1682 | 17년 전 | 2655 | ||
| 1681 | 17년 전 | 1644 | ||
| 1680 | 17년 전 | 1907 | ||
| 1679 | 17년 전 | 7420 | ||
| 1678 | 17년 전 | 1996 | ||
| 1677 | 17년 전 | 4093 | ||
| 1676 | 17년 전 | 2416 | ||
| 1675 | 17년 전 | 2426 | ||
| 1674 | 17년 전 | 2150 | ||
| 1673 | 17년 전 | 2197 | ||
| 1672 | 17년 전 | 2626 | ||
| 1671 | 17년 전 | 3218 | ||
| 1670 | 17년 전 | 5329 | ||
| 1669 |
플래시007
|
17년 전 | 2785 | |
| 1668 |
|
17년 전 | 2697 | |
| 1667 | 17년 전 | 2550 | ||
| 1666 |
|
17년 전 | 1796 | |
| 1665 | 17년 전 | 2206 | ||
| 1664 | 17년 전 | 5307 | ||
| 1663 |
|
17년 전 | 3023 | |
| 1662 |
|
17년 전 | 2580 | |
| 1661 |
|
17년 전 | 3256 | |
| 1660 |
|
17년 전 | 2473 | |
| 1659 |
|
17년 전 | 2829 | |
| 1658 | 17년 전 | 5878 | ||
| 1657 | 17년 전 | 2633 | ||
| 1656 |
Piece
|
17년 전 | 2018 | |
| 1655 |
|
17년 전 | 2653 | |
| 1654 | 17년 전 | 1475 | ||
| 1653 | 17년 전 | 9799 | ||
| 1652 | 17년 전 | 4460 | ||
| 1651 | 17년 전 | 3289 | ||
| 1650 | 17년 전 | 1812 | ||
| 1649 | 17년 전 | 3603 | ||
| 1648 | 17년 전 | 2287 | ||
| 1647 | 17년 전 | 3733 | ||
| 1646 | 17년 전 | 5188 | ||
| 1645 | 17년 전 | 3846 | ||
| 1644 | 17년 전 | 2700 | ||
| 1643 | 17년 전 | 2946 | ||
| 1642 | 18년 전 | 2451 | ||
| 1641 | 18년 전 | 2792 | ||
| 1640 |
porgy
|
18년 전 | 1900 | |
| 1639 | 18년 전 | 3451 | ||
| 1638 |
컴퓨터기술자
|
18년 전 | 2141 | |
| 1637 |
|
18년 전 | 2259 | |
| 1636 | 18년 전 | 2074 | ||
| 1635 | 18년 전 | 3048 | ||
| 1634 |
귀여운현호
|
18년 전 | 1997 | |
| 1633 |
태양의서쪽
|
18년 전 | 2673 | |
| 1632 | 18년 전 | 3873 | ||
| 1631 | 18년 전 | 4569 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기