• 触发器、游标


    1.

    --循环遍历每一个版本,如果没有这个质量要求则将这个质量要求插入进去 

    declare CUR_pbi cursor for 
    SELECT pbi,pbiname 
    FROM MANAGER_VERSION_CONFIG 
    open CUR_pbi 
    fetch next from CUR_pbi into @pbi,@pbiname --将游标向下移1行,获取的数据放入之前定义的变量@versionpbi中 
    while @@fetch_status=0 ---循环判断游标还在读取 
    begin 
    SELECT @count = count(*) FROM dbo.MANAGER_VERSION_lINK WHERE ipalid = @id AND pbi = @pbi 
    if @count = 0 
    begin
    INSERT INTO dbo.MANAGER_VERSION_lINK 
    ([pbi], 
    [pbiname], 
    [ipalid], 
    [userid], 
    [addtime], 
    [pduid] 

    SELECT @pbi, 
    @pbiname, 
    [Id], 
    @userid, 
    @addtime,
    [SourceArea]
    FROM INSERTED 

    update MANAGER_DATA_IPAL set linktimes =linktimes + 1 where Id = @id 
    end 
    fetch next from CUR_pbi into @pbi,@pbiname 
    end
    close CUR_pbi --关闭游标 
    deallocate CUR_pbi ----删除游标

    2.

    ALTER TRIGGER [dbo].[MANAGER_DATA_IPAL_INSERT] 
    ON [dbo].[MANAGER_DATA_IPAL] 
    AFTER INSERT 
    AS 
    BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for trigger here 
    DECLARE @id int, 
    @status VARCHAR(50), 
    @isbaseline numeric(1,0), 
    @userid VARCHAR(500), 
    @addtime datetime, 
    @pbi VARCHAR(100), 
    @pbiname VARCHAR(1000), 
    @count int, 
    @pduid VARCHAR(50), 
    @userid1 VARCHAR(1000), 
    @bigtechname VARCHAR(50) 

    SELECT @id = [Id], @status = Status, @isbaseline = IsBaseLine,@userid=[OperAuthorNotesId],@addtime=(getdate()),@pduid=SourceArea,@bigtechname = [BigTechName] FROM inserted 
    if(@status = 'PASS' and @isbaseline = 1) 
    begin 
    --循环遍历每一个版本,如果没有这个质量要求则将这个质量要求插入进去 
    declare CUR_pbi1 cursor for 
    SELECT pbi,pbiname 
    FROM MANAGER_VERSION_CONFIG 
    open CUR_pbi1 
    fetch next from CUR_pbi1 into @pbi,@pbiname --将游标向下移1行,获取的数据放入之前定义的变量@versionpbi中 
    while @@fetch_status=0 
    begin 
    SELECT @count = count(*) FROM dbo.MANAGER_VERSION_lINK WHERE ipalid = @id AND pbi = @pbi 
    if @count = 0 
    begin
    INSERT INTO dbo.MANAGER_VERSION_lINK 
    ([pbi], 
    [pbiname], 
    [ipalid], 
    [userid], 
    [addtime], 
    [pduid] 

    SELECT @pbi, 
    @pbiname, 
    [Id], 
    @userid, 
    @addtime,
    [SourceArea]
    FROM INSERTED 

    update MANAGER_DATA_IPAL set linktimes =linktimes + 1 where Id = @id 

    end 
    fetch next from CUR_pbi1 into @pbi,@pbiname 
    end
    close CUR_pbi1 --关闭游标 
    deallocate CUR_pbi1 
    end 

    -- ============================================= 
    -- Author: <CHENWEI> 
    -- Create date: <2011-5-24> 
    -- Description: <增加资产的同时,记录动作到MANAGER_DATALOG_IPAL表中> 
    -- ============================================= 
    --insert into MANAGER_DATALOG_IPAL values (@Id,'CHECKED',@userid,getdate(),'',0,getdate()) 

    select top 1 @userid1 = a.userid from MANAGER_CFG_CATEGORY a left join MANAGER_CFG_CATEGORY b on a.ParentId = b.Id 
    where b.ParentId = 0 and b.TypeName = '领域类别' and b.PduId = Convert(int,Round(@pduid,0)) and a.CateName=@bigtechname 

    --判断是否是领主 
    if patindex('%'+@userid+'%',@userid1) = 0 --返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零 
    begin 
    insert into MANAGER_DATALOG_IPAL values (@Id,'CHECKED',@userid,getdate(),'',0,getdate()) 
    end 
    else 
    begin 
    insert into MANAGER_DATALOG_IPAL values (@Id,'PASS',@userid,getdate(),'',0,getdate()) 
    end 

    END
  • 相关阅读:
    window 安装使用npm
    php 身份证验证类
    php nl2br 将 变成<br />
    win10 system guard运行时监视器,关闭服务
    PHP7 引入的“??” 和“?:”的区别
    git 本地删除修改文件后从远程拉取
    深入解读阿里云Redis开发规范
    阿里云Redis开发规范
    Centos7 安装docker
    api-doc-php
  • 原文地址:https://www.cnblogs.com/cw_volcano/p/2080928.html
Copyright © 2020-2023  润新知