 |
|
SQL Server Tips by Burleson |
Implementation Details
To use the DLL from the C++ code in the XP_SMTPSENDMAIL dll, we use
the ‘#import’ support of Microsoft Visual C++. Because CDO itself
uses ADO we also need to ‘#import’ ADO. The code from the pre
compiled header ‘stdafx.h’ in the XP_SMTPSENDMAIL code is as
follows:
#pragma warning(disable :
4146)
#import "c:\program files\common files\system\ado\msado15.dll"
no_namespace rename("EOF", "adoEOF")
#pragma warning(default: 4146)
#import <cdosys.dll>
The #pragma warning disables some level 4 warnings which get
generated when you import ADO. Also as is documented in the MSDN,
EOF is renamed to adoEOF. This is to avoid a conflict between the
ADO property ‘EOF’ and the C/C++ constant of the same name.
To create the message and set it’s ‘To’ property, you would then use
the following code (which does not include error checking for
reasons of brevity):
CDO::IMessagePtr msg;
msg.CreateInstance(__uuidof(CDO::Message));
msg->To = _bstr_t(“somebody@somedomain.com”);
To reduce the amount of boilerplate code, as well as all the other
advantages already mentioned, the XP++ class framework developed in
a previous chapter is used. This simplifies the validation and setup
of many required and optional parameters, which this XP will
require.
The above book excerpt is from:
Super SQL
Server Systems
Turbocharge Database Performance with C++ External Procedures
ISBN:
0-9761573-2-2
Joseph Gama, P. J. Naughter
http://www.rampant-books.com/book_2005_2_sql_server_external_procedures.htm |