Re: AW: [OLEDB_DEV] OLE DB Consumer Templates
Kim Gräsman <[email protected]> Thu, 9 Jan 2003 19:18:34 +0100
| Newsgroups | gmane.comp.windows.devel.oledb.devel |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format.
------_=_NextPart_001_01C2B80B.85D1765E
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Erik,
=20
Does this [1] help? The AOTBLOB sample referenced in the article doesn't =
seem to be available at MSDN anymore...
=20
Kim
=20
[1] http://www.codeproject.com/wtl/Oledb2.asp
-----Original Message-----
From: Erik Valdes [mailto:[email protected]]
Sent: den 9 januari 2003 19:17
To: [email protected]
Subject: Re: AW: [OLEDB_DEV] OLE DB Consumer Templates
Hi,=20
I see what you mean about MS recommending the storage object way. I've =
found a lot of articles describing that. However, I'm having trouble =
finding anything that gives an example of how to do the in-memory way. =
Perhaps someone could point me to an example or a how-to document? I'd =
really appreciate it. =20
Thanks,=20
Erik=20
-----Original Message-----=20
From: Yuancai Ye [ mailto:[email protected]]=20
Sent: Thursday, January 09, 2003 9:57 AM=20
To: [email protected]=20
Subject: Re: [OLEDB_DEV] AW: [OLEDB_DEV] OLE DB Consumer Templates=20
Hi,=20
MS recommends us to use storage object for sending=20
a BLOB into a data source. However, as I tested, this=20
way is bad in many cases since your code needs to=20
create a store object and database needs to recover=20
binnary data from the store object. You'd better use=20
in-memory way to send BLOB for faster speed. With use=20
of in-memory way, the previous two extra steps are=20
avoided. Therefore, in-memory way is faster. That is=20
my guess. Test it yourself.=20
Regards,=20
Yuancai (Charlie) Ye=20
--- Rudolf Wiener <[email protected]> wrote:=20
> Erik,=20
>=20
> For reading and writing blobs, which is what you're=20
> in fact using, I use the=20
> technologies recommended and stream the data with a=20
> storage object. The=20
> macro I use in the accessor is=20
> BLOB_ENTRY_LENGTH_STATUS. I'm not sure if=20
> this is the best way to do it because I have the=20
> impression it slows things=20
> down a bit. But I haven't had the time yet to look=20
> into faster alternatives.=20
>=20
> If you like I can send you excerpts from my app's=20
> code.=20
>=20
> Regards=20
> Rudi=20
>=20
> -----Urspr黱gliche Nachricht-----=20
> Von: OLEDB_DEV=20
> [ mailto:[email protected]]Im Auftrag von=20
> Erik=20
> Valdes=20
> Gesendet: Donnerstag, 09. J鋘ner 2003 17:22=20
> An: [email protected]=20
> Betreff: Re: [OLEDB_DEV] OLE DB Consumer Templates=20
>=20
>=20
> The reason I can't allocate on the stack is that=20
> my variable can be any=20
> length. It essentially boils down to the string=20
> representation of an xml=20
> file. That file can be any size. When I pass it to=20
> my SP, the sp's=20
> parameter is ntext (to allow for any size). What=20
> do people do when they=20
> want to pass XML of unknown length to a SQL Server=20
> stored procedure?=20
>=20
>=20
>=20
> -----Original Message-----=20
> From: Peter Moss [ mailto:[email protected]]=20
> Sent: Thursday, January 09, 2003 7:58 AM=20
> To: [email protected]=20
> Subject: Re: [OLEDB_DEV] OLE DB Consumer Templates=20
>=20
>=20
>=20
> If I remember right, you can't use the macros for=20
> heap-allocated=20
> variables. If you dig into the macro definitions, I=20
> believe you will find=20
> that pointers offset from the beginning of 'this'=20
> are used. Thus, a=20
> heap-allocated variable like m_WorkRequest will not=20
> work.=20
>=20
>=20
>=20
> Why can't you just allocate a TCHAR on the stack=20
> frame of the object, ie,=20
>=20
>=20
>=20
> TCHAR m_WorkRequest[257]; // Or 1 + the size=20
> of your SP parameter size=20
>=20
>=20
>=20
> Then you can just use COLUMN_ENTRY.=20
>=20
>=20
>=20
> HTH,=20
>=20
> Peter=20
>=20
> -----Original Message-----=20
> From: OLEDB_DEV=20
> [ mailto:[email protected]]On Behalf Of=20
> Erik=20
> Valdes=20
> Sent: Wednesday, January 08, 2003 5:22 PM=20
> To: [email protected]=20
> Subject: [OLEDB_DEV] OLE DB Consumer Templates=20
>=20
> I'm having trouble implementing an accessor.=20
> I'm trying to use a=20
> variable (m_WorkRequest) that's dynamically=20
> allocated as the variable that's=20
> bound to a parameter in my accessor (commented line=20
> below). The reason I=20
> need it to be dynamic is that it is XML and can be=20
> any length. The stored=20
> proc's parameter is of ntext type to handle the=20
> variable length. However, I=20
> don't know at compile time how big to make the=20
> buffer for my parameter in my=20
> accessor. What's the proper way to do this? I've=20
> tried COLUMN_ENTRY=20
> (access violation), COLUMN_ENTRY_LENGTH (different=20
> variations produce=20
> different errors, but basically I can't set the=20
> length),=20
> COLUMN_ENTRY_TYPE_SIZE (similar problems as the=20
> previous). I'm running out=20
> of ideas now. The code below is just one of many,=20
> many variations I've=20
> tried.=20
>=20
>=20
>=20
>=20
>=20
> class CAddWorkRequest=20
>=20
> {=20
>=20
> public:=20
>=20
> CAddWorkRequest() STD_INIT=20
>=20
> ~CAddWorkRequest()=20
>=20
> {=20
>=20
> if (m_WorkRequest)=20
>=20
> delete [] m_WorkRequest;=20
>=20
> }=20
>=20
> LONG m_RETURNVALUE;=20
>=20
> LPTSTR m_WorkRequest;=20
>=20
> LONG m_lLength;=20
>=20
>=20
>=20
> void SetStringParam(LPCTSTR szString,int=20
> cBytes)=20
>=20
> {=20
>=20
> m_WorkRequest =3D (LPTSTR) new=20
> TCHAR[cBytes];=20
>=20
> _tcsncpy(m_WorkRequest,szString,cBytes);=20
>=20
> m_lLength =3D _tcslen(m_WorkRequest);=20
>=20
> })=20
>=20
>=20
>=20
> BEGIN_PARAM_MAP(CAddWorkRequest)=20
>=20
> SET_PARAM_TYPE(DBPARAMIO_OUTPUT)=20
>=20
> COLUMN_ENTRY(1, m_RETURNVALUE)=20
>=20
> SET_PARAM_TYPE(DBPARAMIO_INPUT)=20
>=20
> //=20
>=20
COLUMN_ENTRY_TYPE_SIZE(2,DBTYPE_STR,_tcslen(m_WorkRequest),=20
> m_WorkRequest)=20
>=20
>=20
>=20
>=20
>=20
> END_PARAM_MAP()=20
>=20
>=20
>=20
> DEFINE_COMMAND(CAddWorkRequest, _T("{ ? =3D CALL=20
> dbo.AddWorkRequest;1=20
> (?) }"))=20
>=20
>=20
>=20
> };=20
>=20
>=20
>=20
> class CAddWorkRequestCommand : public=20
> CBsDbCommand<CAddWorkRequest>=20
>=20
> {=20
>=20
> };=20
>=20
>=20
>=20
> foo (LPTSTR szWor)=20
>=20
> {=20
>=20
>=20
=3D=3D=3D message truncated =3D=3D=3D=20
__________________________________________________=20
Do you Yahoo!?=20
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.=20
http://mailplus.yahoo.com=20
You can read messages from the OLEDB_DEV archive, unsubscribe from =
OLEDB_DEV,=20
or subscribe to other DevelopMentor lists at http://discuss.develop.com. =
You can read messages from the OLEDB_DEV archive, unsubscribe from =
OLEDB_DEV, or subscribe to other DevelopMentor lists at =
http://discuss.develop.com.=20
You can read messages from the OLEDB_DEV archive, unsubscribe from OLEDB_DEV,
or subscribe to other DevelopMentor lists at http://discuss.develop.com.
------_=_NextPart_001_01C2B80B.85D1765E
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Diso-8859-1">
<TITLE>RE: [OLEDB_DEV] AW: [OLEDB_DEV] OLE DB Consumer Templates</TITLE>
<META content=3D"MSHTML 6.00.2600.0" name=3DGENERATOR></HEAD>
<BODY>
<DIV><SPAN class=3D475531718-09012003><FONT face=3D"Courier New" =
color=3D#000080=20
size=3D2>Erik,</FONT></SPAN></DIV>
<DIV><SPAN class=3D475531718-09012003><FONT face=3D"Courier New" =
color=3D#000080=20
size=3D2></FONT></SPAN> </DIV>
<DIV><SPAN class=3D475531718-09012003><FONT face=3D"Courier New" =
color=3D#000080=20
size=3D2>Does this [1] help? The AOTBLOB sample referenced in the =
article doesn't=20
seem to be available at MSDN anymore...</FONT></SPAN></DIV>
<DIV><SPAN class=3D475531718-09012003><FONT face=3D"Courier New" =
color=3D#000080=20
size=3D2></FONT></SPAN> </DIV>
<DIV><SPAN class=3D475531718-09012003><FONT face=3D"Courier New" =
color=3D#000080=20
size=3D2>Kim</FONT></SPAN></DIV>
<DIV><SPAN class=3D475531718-09012003></SPAN> </DIV>
<DIV><SPAN class=3D475531718-09012003><FONT face=3D"Courier New" =
color=3D#000080=20
size=3D2>[1] <A=20
href=3D"http://www.codeproject.com/wtl/Oledb2.asp">http://www.codeproject=
.com/wtl/Oledb2.asp</A></FONT></SPAN></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000080 2px =
solid">
<DIV class=3DOutlookMessageHeader dir=3Dltr align=3Dleft><FONT =
face=3DTahoma=20
size=3D2>-----Original Message-----<BR><B>From:</B> Erik Valdes=20
[mailto:[email protected]]<BR><B>Sent:</B> den 9 januari =
2003=20
19:17<BR><B>To:</B> [email protected]<BR><B>Subject:</B> =
Re: AW:=20
[OLEDB_DEV] OLE DB Consumer Templates<BR><BR></FONT></DIV>
<P><FONT size=3D2>Hi,</FONT> </P>
<P><FONT size=3D2>I see what you mean about MS recommending the =
storage object=20
way. I've found a lot of articles describing that. =
However, I'm=20
having trouble finding anything that gives an example of how to do the =
in-memory way. Perhaps someone could point me to an example or a =
how-to=20
document? I'd really appreciate it. </FONT></P>
<P><FONT size=3D2>Thanks,</FONT> <BR><FONT size=3D2>Erik</FONT> </P>
<P><FONT size=3D2>-----Original Message-----</FONT> <BR><FONT =
size=3D2>From:=20
Yuancai Ye [<A =
href=3D"mailto:[email protected]">mailto:[email protected]</A>]=20
</FONT><BR><FONT size=3D2>Sent: Thursday, January 09, 2003 9:57 =
AM</FONT>=20
<BR><FONT size=3D2>To: [email protected]</FONT> <BR><FONT=20
size=3D2>Subject: Re: [OLEDB_DEV] AW: [OLEDB_DEV] OLE DB Consumer=20
Templates</FONT> </P>
<P><FONT size=3D2>Hi,</FONT> <BR><FONT size=3D2> MS =
recommends=20
us to use storage object for sending</FONT> <BR><FONT size=3D2>a BLOB =
into a=20
data source. However, as I tested, this</FONT> <BR><FONT size=3D2>way =
is bad in=20
many cases since your code needs to</FONT> <BR><FONT size=3D2>create a =
store=20
object and database needs to recover</FONT> <BR><FONT size=3D2>binnary =
data from=20
the store object. You'd better use</FONT> <BR><FONT size=3D2>in-memory =
way to=20
send BLOB for faster speed. With use</FONT> <BR><FONT size=3D2>of =
in-memory way,=20
the previous two extra steps are</FONT> <BR><FONT size=3D2>avoided. =
Therefore,=20
in-memory way is faster. That is</FONT> <BR><FONT size=3D2>my guess. =
Test it=20
yourself.</FONT> </P>
<P><FONT size=3D2>Regards,</FONT> </P>
<P><FONT size=3D2>Yuancai (Charlie) Ye</FONT> </P>
<P><FONT size=3D2>--- Rudolf Wiener <[email protected]> =
wrote:</FONT>=20
<BR><FONT size=3D2>> Erik,</FONT> <BR><FONT size=3D2>></FONT> =
<BR><FONT=20
size=3D2>> For reading and writing blobs, which is what =
you're</FONT>=20
<BR><FONT size=3D2>> in fact using, I use the</FONT> <BR><FONT =
size=3D2>>=20
technologies recommended and stream the data with a</FONT> <BR><FONT=20
size=3D2>> storage object. The</FONT> <BR><FONT size=3D2>> macro =
I use in=20
the accessor is</FONT> <BR><FONT size=3D2>> =
BLOB_ENTRY_LENGTH_STATUS. I'm not=20
sure if</FONT> <BR><FONT size=3D2>> this is the best way to do it =
because I=20
have the</FONT> <BR><FONT size=3D2>> impression it slows =
things</FONT>=20
<BR><FONT size=3D2>> down a bit. But I haven't had the time yet to=20
look</FONT> <BR><FONT size=3D2>> into faster alternatives.</FONT> =
<BR><FONT=20
size=3D2>></FONT> <BR><FONT size=3D2>> If you like I can send =
you excerpts=20
from my app's</FONT> <BR><FONT size=3D2>> code.</FONT> <BR><FONT=20
size=3D2>></FONT> <BR><FONT size=3D2>> Regards</FONT> <BR><FONT =
size=3D2>>=20
Rudi</FONT> <BR><FONT size=3D2>></FONT> <BR><FONT =
size=3D2>> =20
-----Urspr&#40689;gliche Nachricht-----</FONT> <BR><FONT=20
size=3D2>> Von: OLEDB_DEV</FONT> <BR><FONT =
size=3D2>> [<A=20
=
href=3D"mailto:[email protected]">mailto:[email protected]=
velop.com</A>]Im=20
Auftrag von</FONT> <BR><FONT size=3D2>> Erik</FONT> <BR><FONT =
size=3D2>>=20
Valdes</FONT> <BR><FONT size=3D2>> Gesendet: =
Donnerstag, 09.=20
J&#37592;ner 2003 17:22</FONT> <BR><FONT size=3D2>> =
An:=20
[email protected]</FONT> <BR><FONT =
size=3D2>> =20
Betreff: Re: [OLEDB_DEV] OLE DB Consumer Templates</FONT> <BR><FONT=20
size=3D2>></FONT> <BR><FONT size=3D2>></FONT> <BR><FONT=20
size=3D2>> The reason I can't allocate on the stack is=20
that</FONT> <BR><FONT size=3D2>> my variable can be any</FONT> =
<BR><FONT=20
size=3D2>> length. It essentially boils down to the =
string</FONT>=20
<BR><FONT size=3D2>> representation of an xml</FONT> <BR><FONT =
size=3D2>>=20
file. That file can be any size. When I pass it to</FONT>=20
<BR><FONT size=3D2>> my SP, the sp's</FONT> <BR><FONT size=3D2>> =
parameter=20
is ntext (to allow for any size). What</FONT> <BR><FONT=20
size=3D2>> do people do when they</FONT> <BR><FONT size=3D2>> =
want to pass=20
XML of unknown length to a SQL Server</FONT> <BR><FONT size=3D2>> =
stored=20
procedure?</FONT> <BR><FONT size=3D2>></FONT> <BR><FONT =
size=3D2>></FONT>=20
<BR><FONT size=3D2>></FONT> <BR><FONT size=3D2>> =
-----Original=20
Message-----</FONT> <BR><FONT size=3D2>> From: Peter =
Moss [<A=20
href=3D"mailto:[email protected]">mailto:[email protected]</A>]</FONT> =
<BR><FONT=20
size=3D2>> Sent: Thursday, January 09, 2003 7:58 =
AM</FONT>=20
<BR><FONT size=3D2>> To: =
[email protected]</FONT>=20
<BR><FONT size=3D2>> Subject: Re: [OLEDB_DEV] OLE DB =
Consumer=20
Templates</FONT> <BR><FONT size=3D2>></FONT> <BR><FONT =
size=3D2>></FONT>=20
<BR><FONT size=3D2>></FONT> <BR><FONT size=3D2>> If =
I remember=20
right, you can't use the macros for</FONT> <BR><FONT size=3D2>>=20
heap-allocated</FONT> <BR><FONT size=3D2>> variables. If you =
dig into=20
the macro definitions, I</FONT> <BR><FONT size=3D2>> believe you =
will=20
find</FONT> <BR><FONT size=3D2>> that pointers offset from the =
beginning of=20
'this'</FONT> <BR><FONT size=3D2>> are used. Thus, a</FONT> =
<BR><FONT=20
size=3D2>> heap-allocated variable like m_WorkRequest will =
not</FONT>=20
<BR><FONT size=3D2>> work.</FONT> <BR><FONT size=3D2>></FONT> =
<BR><FONT=20
size=3D2>></FONT> <BR><FONT size=3D2>></FONT> <BR><FONT=20
size=3D2>> Why can't you just allocate a TCHAR on the=20
stack</FONT> <BR><FONT size=3D2>> frame of the object, ie,</FONT> =
<BR><FONT=20
size=3D2>></FONT> <BR><FONT size=3D2>></FONT> <BR><FONT =
size=3D2>></FONT>=20
<BR><FONT size=3D2>> TCHAR=20
m_WorkRequest[257]; // Or 1 + the size</FONT>=20
<BR><FONT size=3D2>> of your SP parameter size</FONT> <BR><FONT=20
size=3D2>></FONT> <BR><FONT size=3D2>></FONT> <BR><FONT =
size=3D2>></FONT>=20
<BR><FONT size=3D2>> Then you can just use =
COLUMN_ENTRY.</FONT>=20
<BR><FONT size=3D2>></FONT> <BR><FONT size=3D2>></FONT> =
<BR><FONT=20
size=3D2>></FONT> <BR><FONT size=3D2>> HTH,</FONT> =
<BR><FONT=20
size=3D2>></FONT> <BR><FONT size=3D2>> Peter</FONT> =
<BR><FONT=20
size=3D2>></FONT> <BR><FONT size=3D2>> =
-----Original=20
Message-----</FONT> <BR><FONT size=3D2>> =
From:=20
OLEDB_DEV</FONT> <BR><FONT size=3D2>> [<A=20
=
href=3D"mailto:[email protected]">mailto:[email protected]=
VELOP.COM</A>]On=20
Behalf Of</FONT> <BR><FONT size=3D2>> Erik</FONT> <BR><FONT =
size=3D2>>=20
Valdes</FONT> <BR><FONT size=3D2>> Sent: =
Wednesday,=20
January 08, 2003 5:22 PM</FONT> <BR><FONT =
size=3D2>> =20
To: [email protected]</FONT> <BR><FONT=20
size=3D2>> Subject: [OLEDB_DEV] OLE DB =
Consumer=20
Templates</FONT> <BR><FONT size=3D2>></FONT> <BR><FONT=20
size=3D2>> I'm having trouble implementing =
an=20
accessor.</FONT> <BR><FONT size=3D2>> I'm trying to use a</FONT> =
<BR><FONT=20
size=3D2>> variable (m_WorkRequest) that's dynamically</FONT> =
<BR><FONT=20
size=3D2>> allocated as the variable that's</FONT> <BR><FONT =
size=3D2>>=20
bound to a parameter in my accessor (commented line</FONT> <BR><FONT=20
size=3D2>> below). The reason I</FONT> <BR><FONT =
size=3D2>> need=20
it to be dynamic is that it is XML and can be</FONT> <BR><FONT =
size=3D2>> any=20
length. The stored</FONT> <BR><FONT size=3D2>> proc's =
parameter is of=20
ntext type to handle the</FONT> <BR><FONT size=3D2>> variable =
length. =20
However, I</FONT> <BR><FONT size=3D2>> don't know at compile time =
how big to=20
make the</FONT> <BR><FONT size=3D2>> buffer for my parameter in =
my</FONT>=20
<BR><FONT size=3D2>> accessor. What's the proper way to do =
this? =20
I've</FONT> <BR><FONT size=3D2>> tried COLUMN_ENTRY</FONT> =
<BR><FONT=20
size=3D2>> (access violation), COLUMN_ENTRY_LENGTH =
(different</FONT>=20
<BR><FONT size=3D2>> variations produce</FONT> <BR><FONT =
size=3D2>>=20
different errors, but basically I can't set the</FONT> <BR><FONT =
size=3D2>>=20
length),</FONT> <BR><FONT size=3D2>> COLUMN_ENTRY_TYPE_SIZE =
(similar problems=20
as the</FONT> <BR><FONT size=3D2>> previous). I'm running =
out</FONT>=20
<BR><FONT size=3D2>> of ideas now. The code below is just one =
of=20
many,</FONT> <BR><FONT size=3D2>> many variations I've</FONT> =
<BR><FONT=20
size=3D2>> tried.</FONT> <BR><FONT size=3D2>></FONT> <BR><FONT=20
size=3D2>></FONT> <BR><FONT size=3D2>></FONT> <BR><FONT =
size=3D2>></FONT>=20
<BR><FONT size=3D2>></FONT> <BR><FONT =
size=3D2>> =20
class CAddWorkRequest</FONT> <BR><FONT size=3D2>></FONT> <BR><FONT=20
size=3D2>> {</FONT> <BR><FONT =
size=3D2>></FONT>=20
<BR><FONT size=3D2>> public:</FONT> =
<BR><FONT=20
size=3D2>></FONT> <BR><FONT=20
size=3D2>> =
CAddWorkRequest()=20
STD_INIT</FONT> <BR><FONT size=3D2>></FONT> <BR><FONT=20
size=3D2>> =20
~CAddWorkRequest()</FONT> <BR><FONT size=3D2>></FONT> <BR><FONT=20
size=3D2>> {</FONT> =
<BR><FONT=20
size=3D2>></FONT> <BR><FONT=20
=
size=3D2>> =
if=20
(m_WorkRequest)</FONT> <BR><FONT size=3D2>></FONT> <BR><FONT=20
=
size=3D2>> =
=20
delete [] m_WorkRequest;</FONT> <BR><FONT size=3D2>></FONT> =
<BR><FONT=20
size=3D2>> }</FONT> =
<BR><FONT=20
size=3D2>></FONT> <BR><FONT=20
size=3D2>> LONG=20
m_RETURNVALUE;</FONT> <BR><FONT size=3D2>></FONT> <BR><FONT=20
size=3D2>> LPTSTR=20
m_WorkRequest;</FONT> <BR><FONT size=3D2>></FONT> <BR><FONT=20
size=3D2>> LONG =
m_lLength;</FONT>=20
<BR><FONT size=3D2>></FONT> <BR><FONT size=3D2>></FONT> =
<BR><FONT=20
size=3D2>></FONT> <BR><FONT=20
size=3D2>> void=20
SetStringParam(LPCTSTR szString,int</FONT> <BR><FONT size=3D2>>=20
cBytes)</FONT> <BR><FONT size=3D2>></FONT> <BR><FONT=20
size=3D2>> {</FONT> =
<BR><FONT=20
size=3D2>></FONT> <BR><FONT=20
=
size=3D2>> =
=20
m_WorkRequest =3D (LPTSTR) new</FONT> <BR><FONT size=3D2>>=20
TCHAR[cBytes];</FONT> <BR><FONT size=3D2>></FONT> <BR><FONT=20
=
size=3D2>> =
=20
_tcsncpy(m_WorkRequest,szString,cBytes);</FONT> <BR><FONT =
size=3D2>></FONT>=20
<BR><FONT=20
=
size=3D2>> =
=20
m_lLength =3D _tcslen(m_WorkRequest);</FONT> <BR><FONT =
size=3D2>></FONT>=20
<BR><FONT size=3D2>> =
})</FONT>=20
<BR><FONT size=3D2>></FONT> <BR><FONT size=3D2>></FONT> =
<BR><FONT=20
size=3D2>></FONT> <BR><FONT size=3D2>> =20
BEGIN_PARAM_MAP(CAddWorkRequest)</FONT> <BR><FONT size=3D2>></FONT> =
<BR><FONT=20
size=3D2>> =20
SET_PARAM_TYPE(DBPARAMIO_OUTPUT)</FONT> <BR><FONT size=3D2>></FONT> =
<BR><FONT=20
size=3D2>> =
COLUMN_ENTRY(1,=20
m_RETURNVALUE)</FONT> <BR><FONT size=3D2>></FONT> <BR><FONT=20
size=3D2>> =20
SET_PARAM_TYPE(DBPARAMIO_INPUT)</FONT> <BR><FONT size=3D2>></FONT> =
<BR><FONT=20
size=3D2>> //</FONT> <BR><FONT =
size=3D2>></FONT>=20
<BR><FONT=20
=
size=3D2>COLUMN_ENTRY_TYPE_SIZE(2,DBTYPE_STR,_tcslen(m_WorkRequest),</FON=
T>=20
<BR><FONT size=3D2>> m_WorkRequest)</FONT> <BR><FONT =
size=3D2>></FONT>=20
<BR><FONT size=3D2>></FONT> <BR><FONT size=3D2>></FONT> =
<BR><FONT=20
size=3D2>></FONT> <BR><FONT size=3D2>></FONT> <BR><FONT=20
size=3D2>> END_PARAM_MAP()</FONT> <BR><FONT =
size=3D2>></FONT> <BR><FONT size=3D2>></FONT> <BR><FONT =
size=3D2>></FONT>=20
<BR><FONT size=3D2>> =
DEFINE_COMMAND(CAddWorkRequest,=20
_T("{ ? =3D CALL</FONT> <BR><FONT size=3D2>> =
dbo.AddWorkRequest;1</FONT>=20
<BR><FONT size=3D2>> (?) }"))</FONT> <BR><FONT size=3D2>></FONT> =
<BR><FONT=20
size=3D2>></FONT> <BR><FONT size=3D2>></FONT> <BR><FONT=20
size=3D2>> };</FONT> <BR><FONT =
size=3D2>></FONT>=20
<BR><FONT size=3D2>></FONT> <BR><FONT size=3D2>></FONT> =
<BR><FONT=20
size=3D2>> class CAddWorkRequestCommand :=20
public</FONT> <BR><FONT size=3D2>> =
CBsDbCommand<CAddWorkRequest></FONT>=20
<BR><FONT size=3D2>></FONT> <BR><FONT =
size=3D2>> =20
{</FONT> <BR><FONT size=3D2>></FONT> <BR><FONT=20
size=3D2>> };</FONT> <BR><FONT =
size=3D2>></FONT>=20
<BR><FONT size=3D2>></FONT> <BR><FONT size=3D2>></FONT> =
<BR><FONT=20
size=3D2>> foo (LPTSTR szWor)</FONT> =
<BR><FONT=20
size=3D2>></FONT> <BR><FONT size=3D2>> =
{</FONT>=20
<BR><FONT size=3D2>></FONT> <BR><FONT size=3D2>></FONT> =
<BR><FONT size=3D2>=3D=3D=3D=20
message truncated =3D=3D=3D</FONT> </P><BR>
<P><FONT =
size=3D2>__________________________________________________</FONT>=20
<BR><FONT size=3D2>Do you Yahoo!?</FONT> <BR><FONT size=3D2>Yahoo! =
Mail Plus -=20
Powerful. Affordable. Sign up now.</FONT> <BR><FONT size=3D2><A=20
href=3D"http://mailplus.yahoo.com"=20
target=3D_blank>http://mailplus.yahoo.com</A></FONT> </P>
<P><FONT size=3D2>You can read messages from the OLEDB_DEV archive, =
unsubscribe=20
from OLEDB_DEV,</FONT> <BR><FONT size=3D2>or subscribe to other =
DevelopMentor=20
lists at <A href=3D"http://discuss.develop.com"=20
target=3D_blank>http://discuss.develop.com</A>.</FONT> </P>You can =
read messages=20
from the OLEDB_DEV archive, unsubscribe from OLEDB_DEV, or subscribe =
to other=20
DevelopMentor lists at http://discuss.develop.com. =
</BLOCKQUOTE></BODY></HTML>
You can read messages from the OLEDB_DEV archive, unsubscribe from OLEDB_DEV,
or subscribe to other DevelopMentor lists at http://discuss.develop.com.
------_=_NextPart_001_01C2B80B.85D1765E--