sql:定时执行存储过程(嵌套存储过程、使用游标)

2024-01-09 09:02:26
BEGIN
?? ?
?? ?Declare @FormNo ?nvarchar(20) ? ?--单号
?? ?Declare @Type ?nvarchar(50) ?--类型
?? ?Declare @PickedQty float ? ?-
?? ?Declare @OutQty float??
?? ?Declare @生产量 float
?? ?Declare @已装箱数量 float?
?? ?Declare @已入库数量 float
?? ?Declare @损耗数量 float?
?? ?Declare @退货品出库数量 int

?? ?declare k cursor for select 单号,类型,勾选数量,出库数量,生产量,已装箱数量,已入库数量,损耗数量,[退货品出库数量] from SCBB_CPSCD_QUERY WHERE 制单日期 ? >= DATEADD(WEEK, -1, GETDATE())
?? ?OPEN k
?? ?fetch next from k into @FormNo,@Type,@PickedQty,@OutQty,@生产量,@已装箱数量,@已入库数量,@损耗数量,@退货品出库数量
?? ?while @@Fetch_status=0
?? ?begin
?? ??? ?IF (@Type IN ('常规','样品', '委外','筛选','全检','补货','委外补货','受托加工','返工')?
?? ?AND @PickedQty = @OutQty?
?? ?AND @生产量 = @已装箱数量?
?? ?AND @生产量 = @已入库数量?
?? ?AND ISNULL(@损耗数量,0) = 0)?
?? ?OR?
?? ?(@FinishProductType = '返修'?
?? ?AND ISNULL(@退货品出库数量,0) <> 0
?? ?AND @生产量 = @退货品出库数量?
?? ?AND ISNULL(@损耗数量,0) = 0)
?? ??? ?BEGIN?
?? ??? ??? ?EXEC SCJH_CPSCD_CLOSE_PROC @FormNo = @FormNo,@CloseRemarks = null,@Results = '000',@Msg = null
?? ??? ?END

?? ?fetch next from k into @FormNo,@Type,@PickedQty,@OutQty,@生产量,@已装箱数量,@已入库数量,@损耗数量,@退货品出库数量
?? ?END?? ??
?? ?close k
?? ?deallocate k

SCJH_CPSCD_CLOSE_PROC 存储过程是有四个输入参数的,所以EXEC的时候需要带上他的四个参数。

在sql server中设置定时作业执行该存储过程:

在步骤里设置要执行的存储过程

?然后在作业里设置执行时间就可以啦

文章来源:https://blog.csdn.net/m0_46845579/article/details/135381136
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。