跪求,我写的这个存储过程有问题,帮忙解决啊

yesjoy 2007-04-13 10:03:46
我在java的方法里面是这样写的:
for (int i = 0; i < len; i++) {
Misfunc misfunc = (Misfunc) funcCodeList.get(i);
String funcCode = misfunc.getMisfuncCode();
Long projEmpFuncId = new Long(super.getNextIdFromSequence());
sql= "insert into sys_proj_staff_func

(proj_emp_func_id,proj_staff_id,misfunc_code) values(?,?,?)"

Object[] value = new Object[] { projEmpFuncId, projStaffId,
funcCode };
getJdbcTemplate().update(sql, value);
}

由于效率的问题,我把上面的循环的insert语句写成了存储过程如下:
create procedure create_proj_auth(projStaffId)
language sql
begin
for rs1 as select * from SYS_MISFUNC where MISFUNC_TYPE='B0'
do
insert into SYS_PROJ_STAFF_FUNC
(PROJ_EMP_FUNC_ID, MISFUNC_CODE, PROJ_STAFF_ID)
values
(PROJ_EMP_FUNC_ID, rs1.MISFUNC_CODE, projStaffId);
end for;
end;

call create_proj_auth;

drop procedure create_proj_auth();
对于上面的存储过程,我有如下两个问题:

1、projStaffId 这个参数怎么传入进去(我这里的写法有问题)
2、PROJ_EMP_FUNC_ID 这个是主键,需要自动生成

最后请问在java的程序又如何来调用这个存储过程呢?多谢
...全文
200 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gahade 2007-04-13
  • 打赏
  • 举报
回复
好像和mssql的语法不太一样,不懂.
yesjoy 2007-04-13
  • 打赏
  • 举报
回复
我是要在db2中执行的存储过程。
上面写的存储过程还没有在java中调用,因为不知道怎么来写,下面我又改进了一些。
create procedure create_proj_auth(projStaffId)
language sql
begin
for rs1 as select * from SYS_MISFUNC where MISFUNC_TYPE='B0'
do
insert into SYS_PROJ_STAFF_FUNC
(PROJ_EMP_FUNC_ID, MISFUNC_CODE, PROJ_STAFF_ID)
values
(nextval for FMIS_REC_ID_SEQ, rs1.MISFUNC_CODE, projStaffId);
end for;
end;

call create_proj_auth parm(9987);

drop procedure create_proj_auth();
baggio785 2007-04-13
  • 打赏
  • 举报
回复
你上面写的存储过程是java中的么?
gahade 2007-04-13
  • 打赏
  • 举报
回复
楼主的是MSSQL的写法吗?

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧