简体   繁体   English

如何在T-SQL中循环变量

[英]How to loop the variables in t-sql

I have a t-sql i have to loop the variables. 我有一个T-SQL我必须循环变量。

DECLARE @empno  nVARCHAR(MAX),@tableHTML  NVARCHAR(MAX) ;
set @empno  =   (select Employee_No from emptemp where active = 'Yes');
SET @tableHTML =
N'<H2>Additions</H2>' +
N'<table border="1">' +
N'<th>Ename</th>' +
N'<th>Sal</th>' +
'<tr>' +
CAST ( ( select td=ename,'',td=sal,'' from emp Where empno = @empno)
FOR XML PATH('tr'), TYPE  ) AS NVARCHAR(MAX) ) + N'</table>' ;

EXEC msdb.dbo.sp_send_dbmail
@recipients=someone@gmail.com,
@subject = emp ,
@body = @tableHTML , @body_format = 'HTML', 
@profile_name = 'Sql Profile'

The Emptemp table looks like Emptemp表看起来像

id  empno   active
1   245     yes
2   124     yes
3   255     yes
4   224     No

I have to send the individual mail based on the data in emp table 我必须根据emp表中的数据发送单个邮件

That is how cursor will look like: 这就是游标的样子:

DECLARE @empno  nVARCHAR(MAX)
DECLARE @tableHTML  NVARCHAR(MAX) ;
DECLARE @ID INT;
DECLARE Curs CURSOR FAST_FORWARD
FOR
    SELECT DISTINCT  ID
    FROM    dEmptemp 
    WHERE active = 'Yes'
    ORDER BY ID

OPEN Curs

FETCH NEXT FROM Curs INTO @ID

WHILE @@FETCH_STATUS = 0

BEGIN 

set @empno  =   (SELECT empno FROM emptemp WHERE ID = @ID);
SET @tableHTML =
N'<H2>Additions</H2>' +
N'<table border="1">' +
N'<th>Ename</th>' +
N'<th>Sal</th>' +
'<tr>' +
CAST ( ( select td=ename,'',td=sal,'' from emp Where empno = @empno)
FOR XML PATH('tr'), TYPE  ) AS NVARCHAR(MAX) ) + N'</table>' ;

EXEC msdb.dbo.sp_send_dbmail
@recipients=someone@gmail.com,
@subject = emp ,
@body = @tableHTML , @body_format = 'HTML', 
@profile_name = 'Sql Profile'

FETCH NEXT FROM Curs INTO @ID

END

CLOSE Curs 
DEALLOCATE Curs;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM