༺天͈̎煞͈̎孤͈̎星͈̎༻ 2009-06-07 14:50
浏览 366
已采纳

JAVA调用ORACLE存储过程问题

这个是我的JAVA程序
public void insertTel_res_rowfame(MDFRowframeresDTO md, String userName)
throws SQLException {
if (md.getStartNo().length() != 0) {
int startNo = Integer.parseInt(md.getStartNo());
int endNo = Integer.parseInt(md.getEndNo());
int RES_ID = ge
.getMaxDev("select max(RES_ID) from TEL_RES_ROWFRAME_RES");// 横列资源ID
db
.setCStatement("begin UPLOAD_MDF_ROWFRAME(?,?,?,?,?,?,?,?); end;");
db.cstmt.setInt(1, bureau_id);
db.cstmt.setInt(2, mdf_id);
db.cstmt.setString(3, md.getMdfcode());
db.cstmt.setString(4, md.getHlbcode());
db.cstmt.setString(5, userName);
db.cstmt.setInt(6, startNo);
db.cstmt.setInt(7, endNo);
db.cstmt.setInt(8, RES_ID);
db.cstmt.executeUpdate();
db.commit();
db.cstmt.close();
System.out.println("正在插入表(TEL_RES_ROWFRAME_RES)述据");
System.out.println("bureau_id=" + bureau_id + "mdf_id=" + mdf_id
+ "mdf_code=" + md.getMdfcode() + md.getHlbcode()
+ "start_no=" + startNo + "end_no=" + endNo+"res_id="+RES_ID);
}
}

这个是数据库连接类 连接没有问题;
// 调用存储过程
public void setCStatement(String cstatment) throws SQLException {
cstmt = con.prepareCall(cstatment);
}

这个是存储过程,用PLSQL测试都能成功,但是用JAVA调用也没有错误,就是数据没有INSERT进去;
CREATE OR REPLACE PROCEDURE UPLOAD_MDF_ROWFRAME(
BUREAU_ID IN TEL_SYS_BUREAU.BUREAU_ID%TYPE, --接入间编码
MDF_ID IN TEL_RES_LAYOUTFRAME_DEV.DEV_ID%TYPE, --设备ID
MDF_CODE IN TEL_RES_ROWFRAME_RES.ROW_NO%type, --MDF编码
MDF_HLBCODE IN TEL_RES_ROWFRAME_RES.ROW_BLOCK_NO%type, -- MDF横列板编码
USERNAME IN TEL_RES_ROWFRAME_RES.USERNAME%TYPE, --导入用户名
IN_RES_ID TEL_RES_ROWFRAME_RES.RES_ID%TYPE, --资源ID
START_NO IN int, --开始设备号
END_NO IN Int )is --终止设备号
RES_ID TEL_RES_ROWFRAME_RES.RES_ID%TYPE;
temVar NUMBER;
x NUMBER;
CODE VARCHAR2(10);
BEGIN
RES_ID :=IN_RES_ID;
temVar :=0;
CODE:='0';
x:=START_NO-1;
loop
RES_ID:=RES_ID+1;
x:=x+1;
exit when x>END_NO;
CODE :=x;
IF LENGTH(CODE)<3 THEN
CODE:='0'||CODE;
END IF;
IF LENGTH(CODE)<3 THEN
CODE :='0'||CODE;
END IF;
select count(*) into temVar from TEL_RES_ROWFRAME_RES where BUREAU_ID=bureau_id and DEV_ID=mdf_id and RES_CODE=
MDF_CODE||'-'||MDF_HLBCODE||'_'||CODE;
IF temVar=0 THEN
INSERT INTO TEL_RES_ROWFRAME_RES ( BUREAU_ID,DEV_ID,RES_ID,RES_CODE,ROW_NO,ROW_BLOCK_NO,ROW_PORT_NO,STATE_ID,NOTE,VER_NUMBER,INSERT_TIME,INSERT_FLAG,USERNAME )
VALUES(bureau_id,MDF_ID,RES_ID+1,MDF_CODE||'-'||MDF_HLBCODE||'_'||CODE,MDF_CODE,MDF_HLBCODE,x,1,NULL,0,SYSDATE,0,USERNAME);
COMMIT;
END IF;
END LOOP;
END UPLOAD_MDF_ROWFRAME;
在控制台打印出
正在插入表(TEL_RES_ROWFRAME_RES)述据
bureau_id=10200mdf_id=97mdf_code=0101H01start_no=0end_no=31res_id=15
正在插入表(TEL_RES_ROWFRAME_RES)述据
bureau_id=10200mdf_id=97mdf_code=0101H01start_no=32end_no=63res_id=15
正在插入表(TEL_RES_ROWFRAME_RES)述据
bureau_id=10200mdf_id=97mdf_code=0101H01start_no=64end_no=95res_id=15
正在插入表(TEL_RES_ROWFRAME_RES)述据
bureau_id=10200mdf_id=97mdf_code=0101H01start_no=96end_no=127res_id=15

  • 写回答

7条回答 默认 最新

  • wangbaoping521 2009-06-13 21:51
    关注

    mdf_code || '-' || mdf_hlbcode || '_' || code 这个不对,你查询和插入的值不一样;还有就是顺序不对;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择
  • ¥15 这款软件是什么?需要能满足我的需求
  • ¥15 SpringSecurityOauth2登陆前后request不一致
  • ¥15 禅道二次开发编辑版本,上传不了发行包