CREATE procedure createNewJobOrder
(@core_user_ids int,
@job_order_ids bigint,
@temp_job_order_id bigint output)as
begin
set xact_abort on
begin transaction declare @temp1 varchar(50);
declare @temp2 varchar(10);
declare @temp_job_order_number varchar(50) ;
declare @temp3 bigint;
declare @pnHeaderId bigint;
declare @jobGroupId bigint;
select @pnHeaderId=pn_header_id from job_order where job_order_id=@job_order_ids;
select @temp1=pn_number from pn_header where pn_header_id=@pnHeaderId;
select @temp2=department_order_segment+1000 from department where department_id=(select department_id from core_user where [user_id]=@core_user_ids);
set @temp_job_order_number=rtrim(@temp1)+'-'+rtrim(right(@temp2,3));
select @temp3=job_order_id from job_order where job_order_number=@temp_job_order_number; if @temp3 is null
begin
insert into job_order(pn_header_id,department_id,work_process_id,job_order_number,job_order_qty,[user_id],pn_number,status,last_ticket_number)
values(@pnHeaderId,1,1,@temp_job_order_number,0,@core_user_ids,rtrim(@temp1),'01',1);
select @temp3=job_order_id from job_order where job_order_number=@temp_job_order_number;
insert into job_group(job_order_id,job_group_name,pn_group_id,create_date,change_date)
select jo.job_order_id,png.GROUP_NAME,png.pn_group_id,getdate() as create_date,getdate() as change_date
from pn_header pn, pn_group png,job_order jo
where pn.pn_header_id=@pnHeaderId and png.pn_header_id=pn.pn_header_id and jo.job_order_id=@temp3; declare c_jobQty cursor for select job_group_id from job_group where job_order_id=@temp3 order by job_group_id for read only;
open c_jobQty; while @@Fetch_status=0 --就这个游标这里麻烦大家帮我看看是不是哪里有问题,这个游标一下执行,一下又不执行的。
begin
fetch next from c_jobQty into @jobGroupId;
insert into job_quantity(job_order_id,job_group_id,sp_size_id,quantity,quantity_receive,rework_qty)select @temp3,@jobGroupId,sp_size_id,quantity,0,0
from job_quantity where job_order_id=@job_order_ids;
end close c_jobQty;
deallocate c_jobQty;
end
set @temp_job_order_id=@temp3;
commit transaction
end
GO
while @@Fetch_status=0 --就这个游标这里麻烦大家帮我看看是不是哪里有问题,这个游标一下执行,一下又不执行的。
begin
insert into job_quantity(job_order_id,job_group_id,sp_size_id,quantity,quantity_receive,rework_qty)select @temp3,@jobGroupId,sp_size_id,quantity,0,0
from job_quantity where job_order_id=@job_order_ids;
fetch next from c_jobQty into @jobGroupId;
end
fetch next from c_jobQty into @jobGroupId;
while @@Fetch_status=0
begin
insert into job_quantity(job_order_id,job_group_id,sp_size_id,quantity,quantity_receive,rework_qty)select @temp3,@jobGroupId,sp_size_id,quantity,0,0
from job_quantity where job_order_id=@job_order_ids; fetch next from c_jobQty into @jobGroupId;
end2.错误处理,
BeginTry ... EndTry
BeginCatch...EndCatch..3.Rollback transaction