日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

    
        
    歡迎訪問 生活随笔!

    生活随笔

    當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

    编程问答

    创建oracle的存储过程,以及通过JDBC调用该存储过程

    發布時間:2023/12/20 编程问答 21 豆豆
    生活随笔 收集整理的這篇文章主要介紹了 创建oracle的存储过程,以及通过JDBC调用该存储过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

    一、創建存儲過程

    create or replace procedure mwp_jgdx_dxxm_batchcopy ( srcxmid in varchar, --項目ID字符串 bbjlid in varchar--新版本ID ) is l_objIDs varchar(32767) := srcxmid||','; l_bbID varchar(42) := bbjlid; --版本記錄ID l_xmobj_id varchar(42); --新生成項目的36位objId l_new_objid varchar(42);--新生成的42位項目objId l_dkxmID varchar(42);--新生成的打捆子項目42位的objId l_dkxmobj_id varchar(42); l_obj_id varchar(42);--臨時obj_id l_pos integer := 0; l_dest varchar(42);--要復制的項目的obj_idl_xmnum integer := 0;---項目序號 l_dkxmnum integer :=0;type table_type is table of mw_app.mwt_ud_jgdx_dxxmk.obj_id%type; objidArray table_type; fjobjidArray table_type; beginl_pos := instr(l_objIDs,',');select mw_sys.newGuid into l_xmobj_id from dual where rownum=1; while l_pos>0 loopl_dest :=substr(l_objIDs,1,l_pos-1);---要復制的下一個項目的obj_id -- insert into mw_app.mwt_ud_dxxmk_temp(objID) values(l_dest);l_objIDs :=substr(l_objIDs,l_pos+length(','));l_pos := instr(l_objIDs,',');--復制項目l_xmnum :=l_xmnum+1; l_new_objid :=l_xmobj_id||'-'||substr('0000' || l_xmnum,-5,5);--新生成項目的42位obj_id insert into MW_APP.MWT_UD_JGDX_DXXMK(OBJ_ID,OBJ_DISPIDX,KB,QYGS,WSGS,DSGS,BZBM,BZSJ,BZR,JHND,XMXH,XMBM,XMMC,XMLX,ZYLB,ZYXF,DXMD,DYDJ,ZTZ,ZCXZ,XMKSSJ,XMWCSJ,LXYJ,XMNR,ZYCD,TZLX,TZYY,TZQXMID,SFCBXM,CBXMJB,XMZT,KYBG,QTXMSX,XMGHSJ,SFXMJH,DKHXMID,XMLY,DYLYXMID,JLBZ,LCZT,DQLCHJ,BZ,SYBBID,BBHJLID,SFGSBB,TGDWSSNL,znhbdz,sfkqdwxm) select l_new_objid ,mw_sys.mwq_obj_dispidx.nextval,KB,QYGS,WSGS,DSGS,BZBM,BZSJ,BZR,JHND,XMXH,XMBM,XMMC,XMLX,ZYLB,ZYXF,DXMD,DYDJ,ZTZ,ZCXZ,XMKSSJ,XMWCSJ,LXYJ,XMNR,ZYCD,TZLX,TZYY,TZQXMID,SFCBXM,CBXMJB,XMZT,KYBG,QTXMSX,XMGHSJ,SFXMJH,DKHXMID,XMLY,DYLYXMID,JLBZ,LCZT,DQLCHJ,BZ,sybbid,l_bbID,'T',TGDWSSNL,znhbdz,sfkqdwxm from MW_APP.MWT_UD_JGDX_DXXMK where obj_id =l_dest;---將原項目的上一版本id,維護為新生成的項目的obj_id update mw_app.mwt_ud_jgdx_dxxmk set sybbid = l_new_objid where obj_id = l_dest;--復制流程日志 select mw_sys.newGuid into l_obj_id from dual where rownum=1;--臨時的日志的36位obj_idinsert into MW_APP.MWT_UD_JGDX_LCRZ(OBJ_ID,OBJ_DISPIDX,XMID,LCHJID,HJMC,CLBM,CLR,CLYJ,LCQYX,CLSJ,LCCLSM,ZXCZ,NCLR) select l_obj_id||'-'||substr('0000'||rownum,-5,5),mw_sys.mwq_obj_dispidx.nextval, l_new_objid ,--將新復制的流程日志的xmid維護為新生成的項目的obj_id LCHJID,HJMC,CLBM,CLR,CLYJ,LCQYX,CLSJ,LCCLSM,ZXCZ,NCLR from MW_APP.MWT_UD_JGDX_LCRZ rz where xmid=l_dest;--復制大修規模及成果 select mw_sys.newGuid into l_obj_id from dual where rownum=1;--臨時的大修規模的36位obj_id insert into MW_APP.MWT_UD_JGDX_GZGM(OBJ_ID,OBJ_DISPIDX,XMID,ND,DYDJ,SBLB,SBMC,ZJJH,SL,JLDW,BZ,RLCD,GZCGFL,GZCGRLCD,GZCGJLDW,GLJLID,gzcgsl) select l_obj_id||'-'||substr('0000'||rownum,-5,5),mw_sys.mwq_obj_dispidx.nextval, l_new_objid,--將新復制的大修規模及成果的xmid維護為新生成的項目的obj_id ND,DYDJ,SBLB,SBMC,ZJJH,SL,JLDW,BZ,RLCD,GZCGFL,GZCGRLCD,GZCGJLDW,GLJLID,gzcgsl--關聯記錄ID暫時未修改 from MW_APP.MWT_UD_JGDX_GZGM gzgm where xmid=l_dest;--復制附件 select mw_sys.newGuid into l_obj_id from dual where rownum=1;--臨時的附件的36位obj_id insert into MW_APP.MWT_UD_JGDX_XMFJ(OBJ_ID,OBJ_DISPIDX,XMID,FJLX,FJMC,FJ,BZ,SYBBID) select l_obj_id||'-'||substr('0000'||rownum,-5,5),mw_sys.mwq_obj_dispidx.nextval, l_new_objid, FJLX,FJMC,FJ,BZ,OBJ_ID from MW_APP.MWT_UD_JGDX_XMFJ fj where xmid =l_dest; --為新項目復制附件文件 select obj_id bulk collect into objidArray from mw_app.mwt_ud_jgdx_xmfj where xmid = l_new_objid; for i in 1..objidArray.count loopselect mw_sys.newGuid into l_obj_id from dual where rownum=1;insert into mw_sys.mwt_is_vfile(vfile_id, vdir_id, vfile_name, vfile_dispidx, vfile_ctime, vfile_mtime, vfile_sn)select l_obj_id, vdir_id, vfile_name, vfile_dispidx, vfile_ctime, vfile_mtime, vfile_snfrom mw_sys.mwt_is_vfile where VFILE_ID = (select VFILE_ID from mw_sys.mwt_om_fsdata where obj_id = (select sybbid from mw_app.mwt_ud_jgdx_xmfj where obj_id = objidArray(i)));insert into mw_sys.mwt_om_fsdata(OBJ_ID, ATTR_ID, VFILE_ID, FSDATA_DATA)select objidArray(i),ATTR_ID, l_obj_id, FSDATA_DATAfrom mw_sys.mwt_om_fsdata fsdata where obj_id = (select sybbid from mw_app.mwt_ud_jgdx_xmfj where obj_id = objidArray(i)); end loop;---復制可研報告文件 select mw_sys.newGuid into l_obj_id from dual where rownum=1;insert into mw_sys.mwt_is_vfile(vfile_id, vdir_id, vfile_name, vfile_dispidx, vfile_ctime, vfile_mtime, vfile_sn)select l_obj_id, vdir_id, vfile_name, vfile_dispidx, vfile_ctime, vfile_mtime, vfile_snfrom mw_sys.mwt_is_vfile where VFILE_ID = (select VFILE_ID from mw_sys.mwt_om_fsdata where obj_id = l_dest);insert into mw_sys.mwt_om_fsdata(OBJ_ID, ATTR_ID, VFILE_ID, FSDATA_DATA)select l_new_objid,ATTR_ID, l_obj_id, FSDATA_DATAfrom mw_sys.mwt_om_fsdata fsdata where obj_id = l_dest;---復制打捆子項目select mw_sys.newGuid into l_dkxmobj_id from dual where rownum=1; l_dkxmnum := 0; select obj_id bulk collect into objidArray from mw_app.mwt_ud_jgdx_dxxmk where dkhxmid = l_dest; for i in 1..objidArray.count loopl_dkxmnum := l_dkxmnum + 1;l_dkxmID := l_dkxmobj_id||'-'||substr('0000' || l_dkxmnum,-5,5);--復制打捆子項目insert into MW_APP.MWT_UD_JGDX_DXXMK(OBJ_ID,OBJ_DISPIDX,KB,QYGS,WSGS,DSGS,BZBM,BZSJ,BZR,JHND,XMXH,XMBM,XMMC,XMLX,ZYLB,ZYXF,DXMD,DYDJ,ZTZ,ZCXZ,XMKSSJ,XMWCSJ,LXYJ,XMNR,ZYCD,TZLX,TZYY,TZQXMID,SFCBXM,CBXMJB,XMZT,KYBG,QTXMSX,XMGHSJ,SFXMJH,DKHXMID,XMLY,DYLYXMID,JLBZ,LCZT,DQLCHJ,BZ,SYBBID,BBHJLID,SFGSBB,TGDWSSNL,znhbdz,sfkqdwxm)select l_dkxmID ,mw_sys.mwq_obj_dispidx.nextval,KB,QYGS,WSGS,DSGS,BZBM,BZSJ,BZR,JHND,XMXH,XMBM,XMMC,XMLX,ZYLB,ZYXF,DXMD,DYDJ,ZTZ,ZCXZ,XMKSSJ,XMWCSJ,LXYJ,XMNR,ZYCD,TZLX,TZYY,TZQXMID,SFCBXM,CBXMJB,XMZT,KYBG,QTXMSX,XMGHSJ,SFXMJH,l_new_objid,XMLY,DYLYXMID,JLBZ,LCZT,DQLCHJ,BZ,sybbid,l_bbID,'T',TGDWSSNL,znhbdz,sfkqdwxmfrom MW_APP.MWT_UD_JGDX_DXXMK where obj_id =objidArray(i);--更新上一版本IDupdate mw_app.mwt_ud_jgdx_dxxmk set sybbid = l_dkxmID where obj_id = objidArray(i);--復制打捆子項目的流程日志 select mw_sys.newGuid into l_obj_id from dual where rownum=1;--臨時的打捆子項目的日志的36位obj_idinsert into MW_APP.MWT_UD_JGDX_LCRZ(OBJ_ID,OBJ_DISPIDX,XMID,LCHJID,HJMC,CLBM,CLR,CLYJ,LCQYX,CLSJ,LCCLSM,ZXCZ,NCLR) select l_obj_id||'-'||substr('0000'||rownum,-5,5),mw_sys.mwq_obj_dispidx.nextval, l_dkxmID ,--將新復制的流程日志的xmid維護為新生成的打捆子項目obj_id LCHJID,HJMC,CLBM,CLR,CLYJ,LCQYX,CLSJ,LCCLSM,ZXCZ,NCLR from MW_APP.MWT_UD_JGDX_LCRZ rz where xmid=objidArray(i);--復制打捆子項目的大修規模及成果 select mw_sys.newGuid into l_obj_id from dual where rownum=1;--臨時的大修規模的36位obj_id insert into MW_APP.MWT_UD_JGDX_GZGM(OBJ_ID,OBJ_DISPIDX,XMID,ND,DYDJ,SBLB,SBMC,ZJJH,SL,JLDW,BZ,RLCD,GZCGFL,GZCGRLCD,GZCGJLDW,GLJLID,gzcgsl) select l_obj_id||'-'||substr('0000'||rownum,-5,5),mw_sys.mwq_obj_dispidx.nextval, l_dkxmID,--將新復制的大修規模及成果的xmid維護為新生成的打捆子項目的obj_id ND,DYDJ,SBLB,SBMC,ZJJH,SL,JLDW,BZ,RLCD,GZCGFL,GZCGRLCD,GZCGJLDW,GLJLID,gzcgsl--關聯記錄ID暫時未修改 from MW_APP.MWT_UD_JGDX_GZGM gzgm where xmid=objidArray(i);--重要:復制完打捆子計劃之后批量更新大修規模相應的關聯記錄ID字段 update MW_APP.MWT_UD_JGDX_GZGM gzgm set gzgm.GLJLID = (select SYBBID from mw_app.mwt_ud_jgdx_dxxmk where gzgm.GLJLID = obj_id) where gzgm.xmid = objidArray(i);--批量復制打捆子項目附件 select mw_sys.newGuid into l_obj_id from dual where rownum=1; insert into MW_APP.MWT_UD_JGDX_XMFJ(OBJ_ID,OBJ_DISPIDX,XMID,FJLX,FJMC,FJ,BZ,SYBBID) select l_obj_id||'-'||substr('0000'||rownum,-5,5),mw_sys.mwq_obj_dispidx.nextval, l_dkxmID,FJLX,FJMC,FJ,BZ,OBJ_ID from MW_APP.MWT_UD_JGDX_XMFJ fj where xmid = objidArray(i);--文件處理(可研報告) select mw_sys.newGuid into l_obj_id from dual where rownum=1; insert into mw_sys.mwt_is_vfile(vfile_id, vdir_id, vfile_name, vfile_dispidx, vfile_ctime, vfile_mtime, vfile_sn) select l_obj_id, vdir_id, vfile_name, vfile_dispidx, vfile_ctime, vfile_mtime, vfile_sn from mw_sys.mwt_is_vfile where VFILE_ID = (select VFILE_ID from mw_sys.mwt_om_fsdata where obj_id = objidArray(i) and rownum = 1) and rownum = 1;insert into mw_sys.mwt_om_fsdata(OBJ_ID, ATTR_ID, VFILE_ID, FSDATA_DATA) select l_dkxmID,ATTR_ID, l_obj_id, FSDATA_DATA from mw_sys.mwt_om_fsdata fsdata where obj_id = objidArray(i) and rownum = 1;--文件處理(打捆子項目附件) select obj_id bulk collect into fjobjidArray from MW_APP.MWT_UD_JGDX_XMFJ where xmid = l_dkxmID; for j in 1..fjobjidArray.count loopselect mw_sys.newGuid into l_obj_id from dual where rownum=1;insert into mw_sys.mwt_is_vfile(vfile_id, vdir_id, vfile_name, vfile_dispidx, vfile_ctime, vfile_mtime, vfile_sn)select l_obj_id, vdir_id, vfile_name, vfile_dispidx, vfile_ctime, vfile_mtime, vfile_snfrom mw_sys.mwt_is_vfile where VFILE_ID = (select VFILE_ID from mw_sys.mwt_om_fsdata where obj_id = (select sybbid from MW_APP.MWT_UD_JGDX_XMFJ where obj_id = fjobjidArray(j)));insert into mw_sys.mwt_om_fsdata(OBJ_ID, ATTR_ID, VFILE_ID, FSDATA_DATA)select objidArray(i),ATTR_ID, l_obj_id, FSDATA_DATAfrom mw_sys.mwt_om_fsdata fsdata where obj_id = (select sybbid from MW_APP.MWT_UD_JGDX_XMFJ where obj_id = fjobjidArray(j)); end loop;--結束文件附件處理for循環end loop;--遍歷打捆子項目完成end loop;----遍歷原項目完成 commit; end; 二、JDBC調用存儲過程

    import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;public class TestStoreProcedure {public static void main(String[] args) {Connection conn = null;CallableStatement cs = null;Statement stmt = null;Statement countStmt = null;ResultSet rs = null;ResultSet countRS = null;String objIDsSt="";try {Class.forName("oracle.jdbc.driver.OracleDriver");conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.43.20:1521:SPMS","mw_sys","sys");cs = conn.prepareCall("{call mw_app.mwp_jgdx_dxxm_batchcopy(?,?)}");StringBuffer stringBuffer= new StringBuffer();stringBuffer.append( " select obj_id from mw_app.mwv_jx_jgdx_dx_xmk xmk, (SELECT XMID, MAX(CLSJ) CLSJ, LCHJID");stringBuffer.append(" FROM MW_APP.MWT_UD_JGDX_LCRZWHERE LCHJID = 'F96105B0-4978-4877-9E6A-F997B3514EED'");stringBuffer.append(" AND CLBM = '63EBEC8E-E766-40D7-ACF4-FEA945102112-02679' AND NCLR = 'B99827FD-1F33-4142-B5FB-6E80BB95D3F9' GROUP BY XMID, LCHJID) LCRZ");stringBuffer.append(" where kb = '3' and nvl(SFGSBB, 'F') != 'T' and xmk.DQLCHJ = 'F96105B0-4978-4877-9E6A-F997B3514EED'");stringBuffer.append(" AND xmk.OBJ_ID = LCRZ.XMID and JHND = '2011' and nvl(SFKQDWXM, 'F') = 'F' and rownum<10 ");objIDsSt = "";String allObjIDs = stringBuffer.toString();String countSql = "select count(obj_id) as allobj ";int idx = allObjIDs.indexOf("from");if( idx>0){countSql += allObjIDs.substring(idx);}else{throw new RuntimeException("SQL語句錯誤");}countStmt = conn.createStatement();countRS = countStmt.executeQuery(countSql);int sum = 0;if( countRS.next()){sum = countRS.getInt(1);}System.out.println("一共有:"+sum+"條數據!");stmt = conn.createStatement();rs = stmt.executeQuery(stringBuffer.toString());while(rs.next()){if( objIDsSt.length()>0){objIDsSt+=","+rs.getString(1);}else{objIDsSt+=rs.getString(1);}}cs.setString(1, objIDsSt);cs.setString(2,"20101220-008");cs.execute();conn.commit();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}}

    總結

    以上是生活随笔為你收集整理的创建oracle的存储过程,以及通过JDBC调用该存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。