.NET相关技术

SqlServer存储过程-动态SQL语句拼接邮箱

2020-03-09  本文已影响0人  Grom_Li

介绍

碰到过一个需求,需要查询指定人后群发邮,所以要拼接邮件的接收人,因为可以公用所以封装成存储过程。
因为游标查询的语句是动态,所以可以这样处理,将声明游标和查询语句拼接出来后再一起用 EXEC sp_executesql 函数执行,最后没有去掉拼接的分号因为邮箱可以识别,其他的拼接也可以用这个例子进行演化。

创建存储过程

CREATE PROCEDURE proc_JointReceiver
(
    @sql nvarchar(400),
    @Receiver nvarchar(400) OUTPUT
)
AS
BEGIN
    DECLARE @Result nvarchar(400) = ''
    DECLARE @User nvarchar(100)
    SET @sql = 'DECLARE Cur_Joint CURSOR FOR '+ @sql
    EXEC sp_executesql @sql
    OPEN Cur_Joint
    FETCH NEXT FROM Cur_Joint INTO @User
    WHILE @@FETCH_STATUS = 0
    BEGIN
        SET @Result += @User + ';'
        FETCH NEXT FROM Cur_Joint INTO @User
    END
    CLOSE Cur_Joint
    DEALLOCATE Cur_Joint

    SET @Receiver = @Result
END

调用

declare @Receiver nvarchar(max)
exec proc_JointReceiver 'select Email from User ',@Receiver output
select @Receiver
上一篇 下一篇

猜你喜欢

热点阅读