zoukankan      html  css  js  c++  java
  • 触发器、游标

    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
  • 相关阅读:
    输人10个学生5门课的成绩,分别用函数实现下列功能:①计算每个学生的平均分; ②计算每门课的平均分; ③找出所有50个分数中最高的分数所对应的学生和课程; ④计算平均分方差: 其中,x;为某一学生的平均分。
    用递归方法求n阶勒让德多项式的值,递归公式为
    用牛顿迭代法求根。方程为ax^3+bx^2 +cx+d=0,系数a,b,c,d的值依次为1,2,3,4,由主函数输人。求x在1附近的一个实根。求出根后由主函数输出
    写一个函数,用起泡法对输人的10个字符按由小到大顺序排列
    写一个函数,输人一行字符,将此字符串中最长的单词输出
    HEX文件格式
    Linux .bashrc
    Linux dd烧写系统
    以太坊代币与账户交易
    记录智能合约solidity编译的坑
  • 原文地址:https://www.cnblogs.com/cw_volcano/p/2080928.html
Copyright © 2011-2022 走看看