레이블이 자바인 게시물을 표시합니다. 모든 게시물 표시
레이블이 자바인 게시물을 표시합니다. 모든 게시물 표시

2013년 8월 5일 월요일

[Oracle] 자바에서 오라클 stored procedure 호출해서 배열을 변수로 입력



public HashMap callSP (HttpServletRequest req) throws Exception, SQLException {  
Connection con = null;  
PreparedStatement pstmt = null;  
OracleCallableStatement ps = null;  
ResultSet rs = null;  
HashMap hm = new HashMap();                      /*  변수로 던질 배열 생성
                          1차 배열
                     */
String aSingleArray[] = new String[10]; try { con = DBHandler.getConnection();
String RtnCode = ""; String RtnMsg = ""; String RtnCapno = ""; /* 값을 배열에 넣는다. */aSingleArray[0] = req.getParameter("order_no") == null ? "" : req.getParameter("order_no");aSingleArray[1] = req.getParameter("rtncan_dt") == null ? "" : req.getParameter("rtncan_dt");aSingleArray[2] = req.getParameter("ssLoginId") == null ? "" : req.getParameter("ssLoginId"); con.setAutoCommit(false); // 1차 배열의 경우ArrayDescriptor array_desc = ArrayDescriptor.createDescriptor("VARCHAR_ARRAY", con);ARRAY s_array = new ARRAY(array_desc, con, aSingleArray);
ps = (OracleCallableStatement) con.prepareCall({ call PKG_NAME.PROC_NAME(?,?,?)});ps.setArray(1, s_array);ps.registerOutParameter(2, java.sql.Types.VARCHAR); // codeps.registerOutParameter(3, java.sql.Types.VARCHAR); // msg   ps.execute();    // 실행



/* 다차원 배열일 경우 */ 
/* 선언 */        String[][] addArray = new String [bl_no.length][19];
/* 입력 */addArray[i][0] = bl_no[idx] == null ? "" : bl_no[idx];addArray[i][1] = vOrderNo == null ? "" : vOrderNo;addArray[i][2] = acct_cd[idx] == null ? "" : acct_cd[idx];
/* 준비 & 실행 */ArrayDescriptor descriptor =          ArrayDescriptor.createDescriptor( "MULDIM_ARR", con );
ARRAY array_to_pass =  new ARRAY( descriptor, con, addArray );
ps =           (OracleCallableStatement)con.prepareCall           ( " begin PKG_NAME.PROC_BEGIN(?,?,?,?); end;" );
ps.setString(1, ssLoginId);ps.setArray(2, array_to_pass);ps.registerOutParameter(3, java.sql.Types.VARCHAR );ps.registerOutParameter(4, java.sql.Types.VARCHAR );     ps.execute();


2013년 6월 26일 수요일

Sql Developer 설치 에러

SQL Developer 를 JRE 포함 버전으로 설치하게 되면 다음과 같은 문제를 자주 겪게 된다.
1. msvcr71.dll 를 찾을 수 없다고 에러 나면서 실행이 안되는 경우
해결방법 >>> 다른 컴퓨터에서 DriveName:\windows\system32 밑에서 해당 파일을 카피해서 같은 위치에 복사해 넣는다.
원인 >>> 특별한 원인이 있나 이 사람아 저 파일이 없어서 그렇지. ㅎㅎ
2. 시작 후 연결설정 시 로케일을 찾을 수 없다는 에러
해결방법 >>> 자바환경변수 설정에 아래를 추가한다.
JAVA_TOOL_OPTIONS : -Dfile.encoding=UTF8 -Duser.language=en -Duser.region=US -Duser.country=US

원인 >>> 자바를 설치 안해서 그렇다. 자바를 설치 하면 보통 패스 설정과 로케일 설정이 되는데 sql developer를 JRE 포함버전으로 설치해서 그렇다.(빼먹지 말자)