zoukankan      html  css  js  c++  java
  • 带有游标的应用的存储过程

    USE [ChiefMes]
    GO

    /****** Object: StoredProcedure [dbo].[SELECT_TotalNum] Script Date: 05/12/2015 09:08:46 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO


    /**********************************
    Author:Derek
    CreateDate:2008-12-18 2008-03-25
    EXEC SELECT_TotalNum 'M0001','0001','I0001','2008-03-27 00:00','2008-03-27 23:59'
    EXEC SELECT_TotalNum 'IM022408','MO10110211','2100501409','2008-07-19 12:00:00','2009-07-19 23:59:00'

    EXEC SELECT_TotalNum '909030276001','IM022413','MO10360211','2122402728','2009-04-03 00:00:00','2009-04-03 23:59:00'
    Function:查询啤数序号
    **********************************/
    ALTER PROCEDURE [dbo].[SELECT_TotalNum]
    (
    @Dispatchorder varchar(100),
    @MachineNo VARCHAR(100),
    @MouldNo VARCHAR(100),
    @ProductNo VARCHAR(100),
    @bDate VARCHAR(19),
    @eDate VARCHAR(19)
    )
    AS
    CREATE TABLE #TEMP
    (
    SelectID INT,
    RowID INT,
    ID INT,
    TotalNum INT
    )
    declare @ID int,@TotalNum int,@Count int,@I int
    set @I=1

    select @Count=count(*)
    from (
    SELECT distinct TotalNum
    FROM DataHistory
    WHERE 1=1 AND Dispatchorder= @Dispatchorder --and clientip=@MachineNo --AND MachineNo=@MachineNo --AND MouldNo=@MouldNo AND ProductNo=@ProductNo
    AND CONVERT(CHAR(19),BeginCycle,121)>=@bDate
    AND CONVERT(CHAR(19),BeginCycle,121)<=@eDate
    ) a

    DECLARE _CURSOR cursor for
    SELECT DISTINCT ID,TotalNum
    FROM DataHistory
    WHERE 1=1 AND Dispatchorder= @Dispatchorder --and clientip=@MachineNo --AND MachineNo=@MachineNo --AND MouldNo=@MouldNo AND ProductNo=@ProductNo
    AND CONVERT(CHAR(19),BeginCycle,121)>=@bDate
    AND CONVERT(CHAR(19),BeginCycle,121)<=@eDate

    ORDER BY TotalNum DESC

    open _CURSOR
    fetch next from _CURSOR into @ID,@TotalNum
    while(@@fetch_status=0)
    begin
    if not exists(select TotalNum from #TEMP where TotalNum=@TotalNum)
    begin
    insert into #TEMP(SelectID,RowID,ID,TotalNum) values(@I,@Count,@ID,@TotalNum)
    set @I=@I+1
    set @Count=@Count-1
    end

    fetch next from _CURSOR into @ID,@TotalNum
    end
    close _CURSOR
    deallocate _CURSOR

    select * from #TEMP order by TotalNum DESC
    drop table #TEMP


    GO

    GO
    /*
    Create By:wuchun on 2014/06/30
    Remark:获取BOM
    create table #g_BOM(lvl int, RootBOMNO varchar(50), CurBOMNO varchar(50), ItemNO varchar(50), ItemType varchar(10), Qty int)
    */
    ALTER proc [dbo].[st_MES_GetBOM](
    @in_RootBOMNO varchar(100) = '',
    @in_CurBOMNO varchar(100) = '',
    @in_ItemNo varchar(100) = '',
    @in_lvl int = 1
    )
    as
    declare @ID int, @BOMNO varchar(50), @ItemNO varchar(50), @ItemName varchar(100)
    declare @ItemType varchar(50), @Qty decimal(10,2), @Scrap decimal(10,2),@Unit varchar(10)

    select @ItemNO = @in_ItemNo
    declare CursorBOM cursor local
    For Select BOMNO, ItemNO, ItemName,ItemType, isnull(Qty,1), isnull(Scrap,1), Unit
    From MES_BOM
    where BOMNO = @in_CurBOMNO and ParentItemNO = @ItemNO
    Open CursorBOM
    Fetch next From CursorBOM Into @BOMNO, @ItemNO,@ItemName, @ItemType, @Qty, @Scrap, @Unit
    While(@@Fetch_Status = 0)
    Begin
    if(@ItemType = '')
    select @ItemType = l.Lan_CN from sys_pubcode s
    join Sys_Language l on s.KeyName = l.KeyName
    join MES_Item i on i.ItemNO = @ItemNO and s.FieldValue = i.ItemType
    where fieldname ='ddl_ItemType' and l.ModuleCode = '70001'


    insert into #g_BOM(lvl, RootBOMNO , CurBOMNO, ItemNO ,ItemName, ItemType, Qty, Scrap, Unit)
    select @in_lvl, @in_RootBOMNO, @BOMNO, @ItemNO, @ItemName, @ItemType, @Qty, @Scrap, @Unit

    set @in_lvl = @in_lvl+1
    exec st_MES_GetBOM @in_RootBOMNO, @BOMNO,@ItemNO, @in_lvl
    Fetch next From CursorBOM Into @BOMNO, @ItemNO,@ItemName, @ItemType, @Qty, @Scrap, @Unit
    End
    Close CursorBOM
    Deallocate CursorBOM

  • 相关阅读:
    Qt 最简单的多线程方法QtConcurrent::run()
    Qt 串口收发数据
    QString使用split按照某字符进行分解
    QT新建QWidget提示框(包含设置QLabel文字大小和居中)
    Mac电脑Docker拉取Mysql报错 no matching manifest for linux/arm64/v8 in the manifest list entries
    Goframe因为axios的header导致的一个BUG解析
    PHP版本如何写出让人很难理解的代码,显得自己很有水平
    vue通用配置异步加载同时保证同步
    GO性能分析pprof
    GO runtime的用法
  • 原文地址:https://www.cnblogs.com/chengjun/p/4497618.html
Copyright © 2011-2022 走看看