所以我最終得到了這個排序,並與我的其他代碼一起工作 - 最終能夠通過光標導出,並在完成刪除文件夾內容時 - 而dbsendmail添加了附件,我也能夠嵌入到電子郵件的正文 - 代碼如下,任何有興趣的人! - 我知道它遠非完美,所以任何幫助清理是讚賞 - 真正的新手警報!希望它是有道理的,我想要做的 - @TT感謝你的努力,併爲此感到遺憾 - 不清楚 - b - 不清楚 - c - blah blah !!! - BR Paul
DECLARE @IMG_PATH VARBINARY(MAX),
@TIMESTAMP VARCHAR(MAX),
@ObjectToken INT,
@MYdtDate NVARCHAR(50),
@MYemail NVARCHAR(50),
@MYszBlockCapitols NVARCHAR(50),
@MYdwJobnumber NVARCHAR(50),
@MYszDelpostCode NVARCHAR(50),
@MYszDelAddrName NVARCHAR(50),
@MYszJobOrderNum NVARCHAR(50),
@MYszDelAddr4 NVARCHAR(50),
@MYszAccCode NVARCHAR(20),
@MYdtTime NVARCHAR(10),
@body NVARCHAR(4000)
DECLARE C1 CURSOR READ_ONLY
FOR
SELECT ISNULL(JobItem.dwJobNumber,' '), ISNULL(JobItem.szDelAddrName,' '), ISNULL(JobItem.szDelPostCode,' '), ISNULL(Signature.szBlockCapitols,' '), ISNULL(StirlingManager_Comp1.dbo.SalesAccounts.szReportText8,' '), Convert(varchar,Signature.dtDate,103) AS Date, Convert(varchar,Signature.dtDate,108)as Time, ISNULL(JobItem.szJobOrderNum,' '), ISNULL(JobItem.szDelAddr4,' '), ISNULL(JobItem.szAccCode,' '), ISNULL(dms_document.data,' ')
FROM Transport_Comp1.dbo.JobItem INNER JOIN
Transport_Comp1.dbo.dms_document ON JobItem.dwJobItemId = dms_document.dwJobItemId LEFT OUTER JOIN
Transport_Comp1.dbo.Signature ON dms_document.id = Signature.dwDocumentIdFK LEFT OUTER JOIN
DocArchive_Comp1.dbo.dms_document AS dms_document_1 ON dms_document.id = dms_document_1.id LEFT OUTER JOIN
StirlingManager_Comp1.dbo.SalesAccounts ON JobItem.szAccCode = StirlingManager_Comp1.dbo.SalesAccounts.szAccountCode
WHERE (Signature.dtDate > DATEADD(MINUTE, -800, GETUTCDATE())) AND (Signature.dtDate < DATEADD(SECOND, -0.001, GETUTCDATE())) AND (Signature.bArrived = 0) AND (StirlingManager_Comp1.dbo.SalesAccounts.szReportText8 > '')
OPEN C1
FETCH NEXT FROM C1 INTO
@MYdwJobnumber, @MYszDelAddrName, @MYszDelPostCode, @MYszBlockCapitols, @MYemail, @MYdtDate, @MYdtTime,@MYszJobOrderNum, @MYszDelAddr4, @MYszAccCode, @IMG_PATH
WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @TIMESTAMP = 'd:\Signatures-TMP\' + @MYdwJobnumber + '.bmp'
EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT
EXEC sp_OASetProperty @ObjectToken, 'Type', 1
EXEC sp_OAMethod @ObjectToken, 'Open'
EXEC sp_OAMethod @ObjectToken, 'Write', NULL, @IMG_PATH
EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, @TIMESTAMP, 2
EXEC sp_OAMethod @ObjectToken, 'Close'
EXEC sp_OADestroy @ObjectToken
SET @body='<html><body><p><img src="http://www.mycompany.co.uk/wp-content/uploads/2013/12/mycompany.png" alt="" align="left"></p>
<br><br><br>
<p><span style="font-size: 9px; font-family: Verdana, Geneva, sans-serif; color: #0d3172;"><strong>My Company<br><span style="Century Gothic;">My Company address</span></span></p>
<br><br></strong>
<h1><span style="font-size: x-large; font-family: arial, helvetica, sans-serif; color: #0d3172;">DELIVERY CONFIRMATION</span></h1>
<br>
<table style="border: 2px double #0d3172; color: #0d3172; font-size: 12pt; font-family: arial, helvetica, sans-serif; width: 800px;" border="1" cellspacing="0" cellpadding="4">
<tbody>
<tr>
<td><span style="font-size: small;">YOUR REFERENCE</span></td>
<td width="590"><span style="font-size: small;"><strong>' + @MYszJobOrderNum + '</strong></span></td>
</tr>
<tr>
<td><span style="font-size: small;">DELIVERY TO</span></td>
<td><span style="font-size: small;"><strong>' + @MYszDelAddrName + '</strong></span></td>
</tr>
<tr>
<td><span style="font-size: small;">TOWN</span></td>
<td><span style="font-size: small;"><strong>' + @MYszDelAddr4 + '</strong></span></td>
</tr>
<tr>
<td><span style="font-size: small;">POSTCODE</span></td>
<td><span style="font-size: small;"><strong>' + @MYszDelPostCode + '</strong></span></td>
</tr>
<tr>
<td><span style="font-size: small;">DELIVERY DATE</span></td>
<td><span style="font-size: small;"><strong>' + @MYdtDate + '</strong></span></td>
</tr>
<tr>
<td><span style="font-size: small;">DELIVERY TIME</span></td>
<td><span style="font-size: small;"><strong>' + @MYdtTime + '</strong></span></td>
</tr>
<tr>
<td><span style="font-size: small;">SIGNED FOR BY</span></td>
<td><span style="font-size: small;"><strong>' + @MYszBlockCapitols + '</strong></span></td>
</tr>
<tr>
<td><span style="font-size: small;">YOUR ACCOUNT CODE</span></td>
<td><span style="font-size: small;"><strong>' + @MYszAccCode + '</strong></span></td>
</tr>
<tr>
<td><span style="font-size: small;">OUR JOB NUMBER</span></td>
<td><span style="font-size: small;"><strong>' + @MYdwJobnumber + '</strong></span></td>
</tr>
</tbody>
</table>
<br><br>
<p><span style="font-size: 12px; font-family: Verdana, Geneva, sans-serif; color: #0d3172;"><strong>DIGITAL SIGNATURE</p></strong></span>
<img src="cid:'+ @MydwJobNumber + '.bmp" /><p></p>
<p><span style="font-size: 12px; font-family: Verdana, Geneva, sans-serif; color: #0d3172;"><strong>Please contact our Customer Services Team if you have any questions or queries.</span></strong></span></p></body>
</html>'
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SQL_Email',
@recipients = @MYemail,
@subject = 'EMAIL POD',
@file_attachments = @TIMESTAMP,
@[email protected],
@body_format = 'HTML';
print @body;
FETCH NEXT FROM C1 INTO
@MYdwJobnumber, @MYszDelAddrName, @MYszDelPostCode, @MYszBlockCapitols, @MYemail, @MYdtDate, @MYdtTime,@MYszJobOrderNum, @MYszDelAddr4, @MYszAccCode, @IMG_PATH
END
EXEC xp_cmdshell 'del D:\Signatures-TMP\*.bmp'
CLOSE C1
DEALLOCATE C1
**爲什麼**你在**字符串**('varchar')列中存儲圖像(二進制數據)?沒有任何意義。如果你有**二進制**數據 - 使用像** VARBINARY()這樣的**二進制**列類型! –
將圖像存儲在'varchar'中的問題在於,這不是真正的二進制表示,而是取決於所使用的排序規則。任何二進制數據應該總是以二進制格式之一存儲,例如, 'varbinary'(或'image'用於真正的舊SQL Server版本)。 – Lucero
爲防萬一它從最後兩個註釋中不清楚 - 你的二進制數據幾乎可以肯定是由於代碼頁更改以適應'VARCHAR'格式而被破壞的,而且很難轉換回'VARBINARY' /'IMAGE'沒有數據丟失(和一個無效的圖像)。 –