存储过程,游标和触发器实例

简介: 原文:存储过程,游标和触发器实例[原创]  自己写的存储过程与游标结合使用的实例,与大家分享,也供自己查阅,仅供参考: --使用游标循环处理,删除重复的记录 declare @UserID int declare @UserName varchar(32) de...
原文: 存储过程,游标和触发器实例[原创]

  自己写的存储过程与游标结合使用的实例,与大家分享,也供自己查阅,仅供参考:

--使用游标循环处理,删除重复的记录
    declare @UserID int
    declare @UserName varchar(32)
    declare @RealName varchar(32)
    declare @UnitFlag int
    declare @Email2 varchar(64)
    declare @Mobile varchar(64)
    declare @Start int
    declare @End int
    declare @Type varchar(16)
    declare @IsSubscribe bit
    declare curEmailTotalLib cursor
    for (select UserID,UserName,RealName,UnitFlag,Email,Mobile,IsSubscribe from Task_IntermediateData)
    open curEmailTotalLib                --打开游标
    fetch next from curEmailTotalLib into @UserID, @UserName, @RealName, @UnitFlag, @Email2, @Mobile, @IsSubscribe
    while @@fetch_status = 0   --获取成功
    begin
        --在邮件系统总库中不存在此用户ID,不存在此邮箱,并且用户订阅过
        if not exists(select * from Task_EmailTotalLib where UserID = @UserID)
            and not exists(select * from Task_EmailTotalLib where Email = @Email2)
            and @IsSubscribe = 1
        begin
            set    @Start = charindex('@', @Email2, 0)
            set @End = charindex('.', @Email2, @Start)
            if  @Start != 0 and @End != 0
                begin
                    --不是垃圾邮件
                    if @Email2 is not null and ltrim(rtrim(@Email2)) <> ''
                    begin
                        if not exists(select * from Task_JunkEmail where Email = @Email2)
                        begin
                            begin try
                                set    @Type = substring(@Email2, @Start + 1, @End - @Start - 1)
                                if @Type != 'qq' and @Type!='126' and @Type != '163' and @Type!='sina'
                                    and @Type !='sohu' and @Type != 'gmail' and @Type!='hotmail' and
                                    @Type != 'yahoo' and @Type != '139' and @Type != '263' and 
                                    @Type !='yeah' and @Type != 'cnki'
                                begin
                                    set    @Type = 'extra'
                                end
                                insert into Task_EmailTotalLib(UserID, UserName, RealName, Email, Mobile,
                                Priority, MailType, LibType, FpIsSend, CpIsSend, UpIsSend, VpIsSend, WpIsSend,
                                XpIsSend, YpIsSend, ZpIsSend, SendCount, SucCount, FailCount, CreditRate, IsJunkEmail,
                                IsSubscribe, IsUsed, Memo) values(@UserID, @UserName, @RealName, @Email2, @Mobile,
                                2, @Type, @UnitFlag, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, @IsSubscribe, 0, '')
                            end try
                            begin catch
                                print '@Email2:'+@Email2+'charindex(''@'', @Email2, 0)'+charindex('@', @Email2, 0)+'  @Start'+@Start+'  @End'+@End+'  @End - @Start - 1:'+@End - @Start - 1
                            end catch
                        end
                    end
                end
        end
        fetch next from curEmailTotalLib into @UserID, @UserName, @RealName, @UnitFlag, @Email2, @Mobile, @IsSubscribe
    end
    close curEmailTotalLib            --关闭游标
    deallocate curEmailTotalLib        --释放游标

  触发器实例:插入数据时,触发器获取这条数据ID,自动修改,比程序处理更方便。

  Create trigger tg_url_update  on [dbo].UrlTotal for insert as
    declare @getid int; 
    declare @url varchar(128);
    set @getid=(select id from inserted);
    set @url='Test.aspx?id='+cast(@getid as varchar(50)) 
    update UrlTotal set url=@url where id=@getid

  

       谢谢阅读~~

目录
相关文章
|
3天前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(2)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
3天前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(1)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
3天前
|
存储 关系型数据库 MySQL
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(4)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
3天前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(3)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
3天前
|
存储 运维 Serverless
Serverless 应用引擎产品使用合集之gRPC触发器为什么会每次收到请求时创建一个新的实例
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
8天前
|
存储 关系型数据库 MySQL
MySQL数据库——存储过程-游标(介绍-声明游标、打开游标、获取游标记录、关闭游标,案例)
MySQL数据库——存储过程-游标(介绍-声明游标、打开游标、获取游标记录、关闭游标,案例)
11 0
|
9天前
|
存储 SQL 数据库
SQL 语言:存储过程和触发器
SQL 语言:存储过程和触发器
27 6
|
10天前
|
存储 关系型数据库 MySQL
mysql 存储过程游标 循环输出select 查询结果
mysql 存储过程游标 循环输出select 查询结果
|
7天前
|
存储 关系型数据库 MySQL
MySql创建带事务操作的存储过程
MySql创建带事务操作的存储过程
|
1天前
|
存储 关系型数据库 MySQL
MYSQL--存储过程操作
MYSQL--存储过程操作