オラクルのアプリケーションが保存された関数を呼び出します

パッケージ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

 

おすすめ

転載: www.cnblogs.com/wangchuanfu/p/10963282.html