패키지 com.founder.ec.common.lucene; 수입 java.sql.CallableStatement의; 수입 java.sql.Connection의; 수입 java.sql.DriverManager의; 수입 의 java.sql.ResultSet; 수입 oracle.jdbc.internal.OracleCallableStatement; 수입 oracle.jdbc.internal.OracleTypes; 공공 클래스 ReadMysql { 공공 정적 연결의 getConnection ()이 발생 예외 { 문자열 URL ": 오라클 : JDBC를 얇은 :. 192.168 @"= ; Class.forName을 ( "oracle.jdbc.driver.OracleDriver" ); 문자열의 userName = ""; 문자열 암호 = "" ; 연결 사기꾼 = DriverManager.getConnection를 (URL, 사용자 이름, 암호); 반환 사기꾼; } / ** * (번호에 MEMBERID VARCHAR2를 OUT realname, VARCHAR2를 OUT mobile_phone) 절차 member_procedure_out을 생성 * / // 释放数据库资源 공공 정적 무효 릴리스 (연결 사기꾼, CallableStatement의 호출의 ResultSet 고해상도) { 경우 (고해상도! = null의 | ! | 전화 = 널 (null) || 사기꾼! = null이 ) { 시도 { ) (res.close을; con.close (); call.close (); } 형 empcursor는 REF CURSOR이고;캐치 (예외 전자) { e.printStackTrace (); } 마지막 { 입술 = 널 ; 전화 = 널 (null)을 ; 입술 = 널 ; } } } 공공 정적 무효 메인 (문자열 []에 args) { / ** * AS myPackage에 패키지를 만들 PROCEDURE queryEmpList (NUMBER에 MEMBERID, empList 아웃 empcursor); 최종 myPackage에; * / 은 try { // 회원 아이디로 회원 이름을 얻기 위해 저장 프로 시저를 호출 // TestPro (); // 연간 소득 회원 ID에 따라 저장 기능, 계산을 호출 // TestFunction (); // 패킷, 커서의 저장 프로 시저를 호출 testcursor (); } 캐치 (예외 E) { ; e.printStackTrace () } 마지막을 { // , 릴리스 (CON가 null, 전화) } } 개인 정적 무효 testcursor () { 연결 사기꾼 = 널 (null) ; 호출 된 CallableStatement = 널 (null)을; 시도 { 문자열 SQL은 = "(?) {mypackage.queryEmpList를} 전화" ; 콘 = 의 getConnection (); 호출 = con.prepareCall (SQL); call.setInt ( 1,7923 ); call.registerOutParameter ( 2 OracleTypes.CURSOR); // 光标 call.execute (); // 取出该会员的所有信息 ResultSet의 입술 = ((OracleCallableStatement) 호출) .getCursor (2 ); 동안 (res.next ()) { 문자열 이름 = res.getString ( "real_name" ); INTMEMBERID = res.getInt ( "MEMBER_ID" ); System.out.print (이름 + MEMBERID); } } 캐치 (예외 전자) { e.getMessage (); } } 개인 정적 무효 testfunction () { 접속 콘 = 널을 ; 호출 된 CallableStatement = 널 (null)을 ; 시도 { 문자열 SQL = "{? = query_member 전화 (?)}" ; 콘 = 의 getConnection (); 전화 =con.prepareCall (SQL); call.registerOutParameter ( 1 , OracleTypes.NUMBER); call.setInt ( 2,7923 ); call.execute (); 배 합 = call.getDouble (1 ); 에서 System.out.println (합); } 캐치 (예외 전자) { e.getMessage (); } } 개인 정적 무효 testpro () { 접속 콘 = 널을 ; 호출 된 CallableStatement 문자열 SQL= 널 ; 시도 { "(?)} {전화 member_procedure_out를"= ; 콘 = 의 getConnection (); 호출 = con.prepareCall (SQL); call.setInt ( 1, 7923 ); call.registerOutParameter ( 2 , OracleTypes.VARCHAR); } 캐치 (예외 전자) { e.getMessage (); } 시도 { ) (call.execute을; 문자열 realName = call.getString (2 ); 에서 System.out.println (realName); }캐치 (예외 전자) { e.printStackTrace (); } } }
생성 PROCEDURE의 raise_order_price_procedure (ORDERID 에서 NUMBER ) 등 PSAL ORDER_INFO.paid_fee의 %의 유형; BEGIN 선택 paid_fee를 로 PSAL 에서 ORDER_INFO 여기서 ORDER_ID = ORDERID; 업데이트 ORDER_INFO가 설정 paid_fee = paid_fee + 100 여기서 ORDER_ID = ORDERID; DBMS_OUTPUT.PUT_LINE ( ' 涨前: ' || PSAL || ' 涨后: ' ||(PSAL + 100 )); END ; 드롭 절차의 member_procedure_out을; CREATE PROCEDURE의 (MEMBERID을 member_procedure_out 에 NUMBER , OUT realname VARCHAR2를 ) AS BEGIN 선택 m.REAL_NAME를 로 realname 에서 부재 m 곳 m.MEMBER_ID = MEMBERID; END ; / - BEGIN raise_order_price_procedure ( 102,467을 ); END ; CREATE FUNCTION을query_member (MEMBERID 에서 NUMBER ) RETURN의 NUMBER AS PSAL member.account_fee의 %의 유형; PCOMM의 member.sum_points %의 유형; BEGIN 선택 account_fee, sum_points INTO PSAL, PCOMM 에서 회원을 어디에 MEMBER_ID = MEMBERID; RETURN의 PSAL * 12 + NVL (PCOMM, 0 ); END ; 드롭 패키지 myPackage에를; CREATE 패키지 myPackage에 AS 형을 empcursor이다 REF 커서는 ; PROCEDURE queryEmpList (MEMBERID 에서 NUMBER , empList empcursor OUT); 최종 myPackage에; 생성 또는 교체 패키지의 myPackage에 BODY AS PROCEDURE queryEmpList (MEMBERID 에서 NUMBER , empList 아웃을 empcursor) 로 BEGIN OPEN empList을 위해 선택 * 에서 MEMBER 여기서 MEMBER_ID = MEMBERID; END queryEmpList; 최종 myPackage에; 만들 패키지 emp_pkg을인 절차 emp_update_ename (v_empno VARCHAR2 , v_ename의 VARCHAR2는 ); 함수 emp_get_sal (v_empno VARCHAR2 ) 반환 번호 ; 끝 ; 선택 * 에서 부재 여기서 MEMBER_ID = 7,923