2014-03-24 7 views
0

저장 프로 시저가 새로 도입되었습니다. 나는 테이블을 읽고 메일을 시도하고 아래의 쿼리sp_send_dbmail을 호출하는 동안 행이 표시되는 열 이름을 피하는 방법은 무엇입니까?

create procedure mailtouser 
as 
    declare @data varchar(max), 
    @user varchar(max) 
    as 
    set @data='set nocount on;select col_name from tbl_name where id=1;set nocount off;' 
    set @user='[email protected]' 
    set @query= 
    exec sp_send_dbmail 
      @profile_name = 'profile', 
      @recipients = @user, 
      @subject = 'automail', 
     @execute_query_database = 'database', 
     @query = @data; 
    end 
end 

이 스크립트를 실행하는 동안 이

갈 간부 mailtouser을 한 것, 내가

col_name 
------------------------------------------------------------------------------------------------------------ 
datas. 
로 메일

받고 있어요

이 col_name 및 행을 피하는 방법. 나는 그 데이터를 우편으로 원한다.

답변

0

먼저 데이터베이스 이름을 [데이터베이스]로 지정 하시겠습니까? [AdventureWorks2012]와 유사해야합니다.

두 번째로 쿼리가 실행되어 결과를 반환합니다. 3 부분 표기법 [AdventureWorks2012]. [Person]. [Address]를 사용하는 경우 @execute_query_database가 필요하지 않습니다.

셋째,이 옵션과 함께 사용되는 다른 매개 변수가 있습니다. 한번 봐봐.

@query_result_header 당신이 모든 권한을 HTML로 본문 형식을 변경하려면, 다른 한편으로

@exclude_query_output @query_result_separator @query_result_width.

SET 문 안에서 쿼리를 실행하여 원하는 방식으로 데이터 서식을 지정하십시오.

-- Send with embedded html table containing query data 
DECLARE @VAR_HTML NVARCHAR(MAX) ; 
SET @VAR_HTML = 
N'<h1>Work Order Report<h1>' + 
N'<table border="1">' + 
N'<tbody><tr><th>Work Order ID</th><th>Product ID</th>' + 
N'<th>Name</th><th>Order Qty</th><th>Due Date</th>' + 
N'<th>Expected Revenue</th></tr>' + 
CAST ((SELECT td = wo.WorkOrderID, '', 
td = p.ProductID, '', 
td = p.Name, '', 
td = wo.OrderQty, '', 
td = wo.DueDate, '', 
td = (p.ListPrice - p.StandardCost) * wo.OrderQty 
FROM AdventureWorks2008R2.Production.WorkOrder as wo 
JOIN AdventureWorks2008R2.Production.Product AS p 
ON wo.ProductID = p.ProductID 
WHERE DueDate > '2006-04-30' 
AND DATEDIFF(dd, '2006-04-30', DueDate) < 2 
ORDER BY DueDate ASC, 
(p.ListPrice - p.StandardCost) * wo.OrderQty DESC 
FOR XML PATH('tr'), TYPE 
) AS NVARCHAR(MAX)) + 
N'</tbody></table>' 

EXEC msdb.dbo.sp_send_dbmail 
@recipients='[email protected]', 
@subject = 'Work Order List', 
@body = @VAR_HTML, 
@body_format = 'HTML' ; 

감사

J