幸せのちから

          平凡的世界
          看似平常實崎嶇
          成如容易卻艱辛

          怎樣在sqlplus和JAVA中調用帶有IN-OUT參數的存儲過程

          一、 SQLPLUS
          比如我的數據庫中有下面這樣一個存儲過程,我怎么樣能調用這個存儲過程,并得到返回值呢?
          CREATE OR REPLACE
          PROCEDURE TEST_PROCEDURE1
            (
              PARAM1 IN VARCHAR2,
              PARAM2      IN OUT VARCHAR2,
              PARAM3      IN OUT NUMBER)
                          IS
          BEGIN
            PARAM2              := '88888';
            PARAM3              := '0';
          END TEST_PROCEDURE1;

          一般調用存儲過程或者函數會想到CALL或者EXECUTE,但是問題的關鍵是這個存儲過程具有IN-OUT參數,應該是不能使用上面兩個命令吧,
          所以我想到就是自己寫個匿名PL/SQL塊來進行調用。代碼如下所示:
          DECLARE
            PARAM1 VARCHAR2(10);
            PARAM2 VARCHAR2(10);
            PARAM3 NUMBER;
          BEGIN
            PARAM1 := '810' ;
            PARAM2 := '1';
            PARAM3 :=1;
           TEST_PROCEDURE1(PARAM1 ,PARAM2 ,PARAM3 );
            DBMS_OUTPUT.PUT_LINE(PARAM2 );
            DBMS_OUTPUT.PUT_LINE(PARAM3 );
          END;

          PL/SQL新手,如果哪位有更好的方法請賜教。

          二、使用JAVA調用
                  conn:  一般的JDBC連接,JAVA調用主要代碼如下

                  CallableStatement call = conn.prepareCall("{call TEST_PROCEDURE1(? ,? ,?)}");
                  call.setString(1, "810");//傳入參數1
                  call.setString(2, "1");//傳入參數2(傳出參數1)
                  call.setInt(3, 1);//傳入參數3(傳出參數2)
                  call.registerOutParameter(2, java.sql.Types.VARCHAR);//傳出參數1
                  call.registerOutParameter(3, java.sql.Types.NUMERIC);//傳出參數2
                  call.execute();
                  System.out.println(call.getString(2));
                  System.out.println(call.getInt(3));

          posted on 2009-04-17 15:05 Lucky 閱讀(1882) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2009年4月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          導航

          隨筆分類(125)

          文章分類(5)

          日本語

          搜索

          積分與排名

          最新隨筆

          最新評論

          主站蜘蛛池模板: 泾源县| 西畴县| 五寨县| 凤台县| 兴城市| 揭阳市| 绥江县| 夏河县| 如皋市| 黑山县| 涡阳县| 武义县| 深圳市| 沂南县| 芦山县| 宜昌市| 海伦市| 襄汾县| 司法| 华坪县| 富顺县| 肥东县| 滦平县| 金堂县| 陆丰市| 东光县| 丹巴县| 化德县| 文山县| 会昌县| 历史| 确山县| 新竹市| 福清市| 云阳县| 乌鲁木齐县| 舞钢市| 全州县| 名山县| 长寿区| 安仁县|