日期:2014-05-19  浏览次数:20773 次

跪求,我写的这个存储过程有问题,帮忙解决啊
我在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的程序又如何来调用这个存储过程呢?多谢

------解决方案--------------------
楼主的是MSSQL的写法吗?
------解决方案--------------------
你上面写的存储过程是java中的么?
------解决方案--------------------
好像和mssql的语法不太一样,不懂.