hello world

          隨筆 - 2, 文章 - 63, 評論 - 0, 引用 - 0
          數(shù)據(jù)加載中……

          JAVA調(diào)用數(shù)據(jù)庫的存儲過程

          下午調(diào)試了一個調(diào)用數(shù)據(jù)庫存儲過程的片段,居然弄了兩三個小時,下邊小小總結(jié)一下。
          關(guān)鍵代碼:
          1??? String sql="CALL pkg_rfts_global.sp_gui_delete_Object(?)";
          2????CallableStatement inoutProc=(CallableStatement) conn.prepareCall(sql);
          3????inoutProc.registerOutParameter(1,4);
          4????inoutProc.setInt(1,9450);
          5??? inoutProc.execute();
          6????inoutProc.close();

          整個過程就如上了,sql就是一個存儲字符串的變量;con是事先已經(jīng)和數(shù)據(jù)庫連接好的連接(Connection類);inoutProc就是CallableStatement 類的一個實例;
          第一句話就是要執(zhí)行的命令語句,pkg_rfts_global是包名,sp_gui_delete_Object是存儲過程名,看老師給我們演示時還有在最前面加入登陸用戶名的,這里沒有也通過了,可能是已經(jīng)登陸的原因。小括號里是變量,這里是在存儲過程中定義的,這個存儲過程就定義了一個變量。第三行是設(shè)置變量輸出時的大小,如registerOutParameter方法指定了上述的第一個參數(shù)大小為4;第三句話是設(shè)置參數(shù),setInt方法設(shè)置了第一個參數(shù)的整形值為9450;第五句話開始執(zhí)行這個語句;最后關(guān)閉。
          出現(xiàn)的問題(因為是第一次用,很弱智的說):
          1、沒有加CALL;
          2、在語句后面多了一個“;”;

          再貼幾句話:
          ??????????????? cs.registerOutParameter(2, java.sql.Types.INTEGER);
          ??????????????? cs.registerOutParameter(4, java.sql.Types.VARCHAR);
          ??????????????? cs.registerOutParameter(10, java.sql.Types.FLOAT);
          ??????????????? cs.registerOutParameter(20, java.sql.Types.VARCHAR);
          cs和inoutProc是一個類型了,這是在定義變量輸出時大小的另外一種方法。

          posted on 2008-07-22 15:46 聽風(fēng) 閱讀(286) 評論(0)  編輯  收藏 所屬分類: JAVA

          主站蜘蛛池模板: 铅山县| 靖边县| 周口市| 泽州县| 太仆寺旗| 丽水市| 边坝县| 集贤县| 陆丰市| 麻阳| 镇沅| 策勒县| 贵德县| 和静县| 三台县| 乐至县| 郧西县| 龙井市| 乡宁县| 绥阳县| 汶川县| 波密县| 定陶县| 肥西县| 麻栗坡县| 宁远县| 乌拉特中旗| 武城县| 宣城市| 彭山县| 武川县| 天门市| 那曲县| 阿尔山市| 色达县| 手游| 博湖县| 河北省| 阿拉善盟| 乌拉特中旗| 鹤峰县|