一个存储过程包含了很多很多

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER proc [dbo].[CD_SendMailDate]
@Sendfrequency int
--exec CD_SendMailDate 2
as
declare @Email varchar(200),@key varchar(200),@Eproductkind1idstr varchar(200),@EmemberId int,@linkManFirstName varchar(200),@linkManLastName varchar(200),@UserName varchar(200)
declare my_cursor cursor scroll
for select distinct isnull(et.Email,'')as Email from EtradeAlert as et
    where Sendfrequency=@Sendfrequency and et.EmailActivationStatus = 1 and et.Email is not null and et.email<>'';
--打开游标
    open my_cursor
--创建临时表
create table #SendData
(
 EmemberId int,
 keyword varchar(200),
 EKind1Id1Str varchar(200),
 Email varchar(200),
 Linkmanfirstname varchar(200),
 Linkmanlastname varchar(200),
 UserName varchar(200),
 Sendfrequency int
)
--必须用FETCH语句来取得数据 可以传递参数
    fetch next from my_cursor into @Email
--fetch_status=0一切正常
    while(@@fetch_status=0)
      begin
        if @Email<>''
         begin
          set @key=''
          set @Eproductkind1idstr=''
          select top 4 @EmemberId=EmemberId,@key= isnull(@key,'')+rtrim(ltrim(TradeAlertkeyword))+'@' ,@Eproductkind1idstr=isnull(@Eproductkind1idstr,'')+Eproductkind1idstr+'@',@linkManFirstName=linkmanfirstname,@linkManLastName=linkmanlastname,@UserName=username from
          (
           select Row_number() over(partition by TradeAlertkeyword order by EtradeAlert_id asc)as PK, isnull(Emember_id,0) EmemberId,isnull(linkmanfirstname,'') linkmanfirstname,isnull(linkmanlastname,'') linkmanlastname,username,isnull(et.Email,Emember.Email)as Email,TradeAlertkeyword,EtradeAlert_id,Eproductkind1idstr from EtradeAlert as et
           left join Emember on (et.Email=Emember.Email)
           where Sendfrequency=@Sendfrequency and TradeAlertkeyword is not null and TradeAlertkeyword!='' and IsSend=1 and et.Email=@Email
          ) as T
          where PK=1 order by EtradeAlert_id desc
         if @key != ''
             --select @EmemberId as EmemberId,@key as keyword,@Eproductkind1idstr as EKind1Id1Str,@Email as Email
             insert into #SendData values(@EmemberId,@key,@Eproductkind1idstr,@Email,@linkManFirstName,@linkManLastName,@UserName,@Sendfrequency);
          end
          fetch next from my_cursor into @Email
      end
--关闭游标
    close my_cursor
--删除游标资源
    deallocate my_cursor
    select * from #SendData













原文地址:https://www.cnblogs.com/ChengDong/p/2163637.html