幸せのちから

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

          怎樣在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 閱讀(1876) 評論(0)  編輯  收藏


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


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

          導航

          隨筆分類(125)

          文章分類(5)

          日本語

          搜索

          積分與排名

          最新隨筆

          最新評論

          主站蜘蛛池模板: 平潭县| 巴东县| 龙泉市| 霸州市| 馆陶县| 邢台县| 长泰县| 温宿县| 丽水市| 灵台县| 沽源县| 易门县| 东乡族自治县| 兰坪| 四子王旗| 平湖市| 灵璧县| 松江区| 宁武县| 古浪县| 天峨县| 信阳市| 伊春市| 泾源县| 喜德县| 颍上县| 隆子县| 聂荣县| 寻乌县| 广西| 沂水县| 麻阳| 缙云县| 永福县| 灵寿县| 卓资县| 松阳县| 许昌县| 施秉县| 井研县| 阳新县|