パッケージ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 "192.168 @:オラクル:薄いJDBCを。" = ; Class.forNameの( "oracle.jdbc.driver.OracleDriverと" ); 文字列のuserName = ""; 文字列のパスワード =「」; 接続コン = したDriverManager.getConnection(URL、ユーザー名、パスワード); 返す詐欺; } / ** *(VARCHAR2 OUT mobile_phone、VARCHAR2をOUT本名、NUMBERでMEMBERID)PROCEDUREのmember_procedure_outをCREATE * / // 释放数据库资源 パブリック 静的 ボイドリリース(接続コン、CallableStatementの呼び出し、のResultSet RES){ もし!(RES = ヌル | !|呼び出す= ヌル ||コン=!ヌル){ しようと{ )(res.closeを。 con.close(); call.close(); } キャッチ(例外e){ e.printStackTrace(); } 最後に{ RES = NULL ; 呼び出し = はnullを。 RES = nullを。 } } } パブリック 静的 ボイドメイン(文字列[]引数){ / ** * AS mypackageパッケージをCREATE TYPEのEMPCURSORはREF CURSORです。 PROCEDURE queryEmpList(NUMBERでMEMBERID、EMPLIST OUTのEMPCURSOR)。 ENDのmypackageと、 * / のtry { // メンバーIDでメンバーシップの名前を取得するストアドプロシージャを呼び出す // TestPro(); // その年収会員IDに応じて記憶されている機能、計算を呼び出します // TestFunction(); // カーソル、パケットに格納されたプロシージャを呼び出す ()testcursor; } キャッチ(例外E){ e.printStackTrace(); } 最後に{ // リリース(CON、呼び出し、NULL); } } 専用 静的 ボイドtestcursor(){ 接続コン = nullを。 呼び出しのCallableStatement = ヌル; 試す{ 文字列のSQL = "{mypackage.queryEmpListを呼び出します(?)}" 。 CON = のgetConnection(); 呼び出し = con.prepareCall(SQL)。 call.setInt( 1,7923 )。 call.registerOutParameter( 2、OracleTypes.CURSOR)。// 光标 call.execute(); // 取出该会员的所有信息 のResultSet RES =((たOracleCallableStatement)コール).getCursor(2 )。 一方、(res.next()){ 文字列名 = res.getString( "REAL_NAME" )。 int型MEMBERID = res.getInt( "MEMBER_ID" )。 System.out.print(名 + MEMBERID)。 } } キャッチ(例外e){ e.getMessage()。 } } プライベート 静的 ボイドtestfunction(){ 接続CON = NULL ; 呼び出しのCallableStatement = ヌル; 試す{ 文字列は、SQL = "{?= query_member呼び出します(?)}"; CON = のgetConnection(); 呼び出し =con.prepareCall(SQL)を。 call.registerOutParameter( 1 、OracleTypes.NUMBER)。 call.setInt( 2,7923 )。 call.execute(); 二重和= call.getDouble(1 )。 System.out.println(合計)。 } キャッチ(例外e){ e.getMessage()。 } } プライベート 静的 ボイドtestpro(){ 接続CON = NULL ; CallableStatementの呼び出し= NULL ; 試す{ 文字列のSQL= "{member_procedure_out呼び出します(?)}" 。 CON = のgetConnection(); 呼び出し = con.prepareCall(SQL)。 call.setInt( 1、7923 )。 call.registerOutParameter( 2 、OracleTypes.VARCHAR)。 } キャッチ(例外e){ e.getMessage()。 } 試みる{ call.executeを(); ストリング本名 = call.getString(2 )。 System.out.println(本名)。 }キャッチ(例外e){ e.printStackTrace(); } } }
作成 手順 raise_order_price_procedure(注文ID で 数) として PSAL ORDER_INFO.paid_feeの%のTYPE。 BEGIN 選択 paid_feeのに PSAL から ORDER_INFO ORDER_ID = 注文ID。更新 ORDER_INFOが設定 paid_fee = paid_fee + 100 ここで ORDER_ID = 注文ID。 DBMS_OUTPUT.PUT_LINE(' 涨前:' || PSAL || ' 涨后:' || (PSAL + 100 ))。 END ; ドロップ PROCEDUREのmember_procedure_outを。 CREATE PROCEDUREの member_procedure_outを(MEMBERID で NUMBERは、OUT本名 VARCHAR2の) AS BEGIN 選択 m.REAL_NAMEのに本名からメンバm m.MEMBER_ID = MEMBERID。 END ; / - BEGIN (raise_order_price_procedureを102467 )。 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。 戻り PSAL * 12 + NVL(PCOMM、0 ); END ; ドロップmypackageパッケージを、 CREATE mypackageパッケージをAS TYPEのEMPCURSORある REF CURSORは、 PROCEDURE queryEmpList(MEMBERID で NUMBER 、EMPLIST OUT EMPCURSOR)。 ENDのmypackageと、 作成 または 交換する パッケージ本体mypackageとAS PROCEDURE queryEmpList(MEMBERID で NUMBER、EMPLIST OUTのEMPCURSORを)として BEGIN OPEN EMPLISTをするために 選択 * から MEMBER どこ MEMBER_ID = MEMBERID。 END queryEmpList; ENDのmypackageと、 作成したパッケージemp_pkgをある プロシージャ emp_update_enameは(v_empno VARCHAR2、v_enameのVARCHAR2 )。 関数 emp_get_sal(v_empno VARCHAR2)戻り 番号; エンド; 選択 * から メンバーをどこ MEMBER_ID = 7923